冒泡排序:
每次对照相邻两个数据的大小,升序小的拍前面,若前一个数比后一个数大,则交流两数位置。须要两次for
轮回遍历.
长处:简朴
瑕玷:时候复杂度高,运转效力低下
function sortArr(arr){
var temp;
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] > arr[j]){
times++;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
console.log("第"+(++times)+"次排序后:"+arr);
}
}
return arr;
}
var times = 0;
sortArr([2,5,4,1,7,3,8,6,9,0]);
out :[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
疾速排序:
先找到一个基准点(平常数组中部),数组即被分为两部分,顺次与基准点数据比较,比它小的,放左侧,比它大的放右侧,摆布分别用一个空数组去存储比较后的数据,末了实行上述操纵,晓得数组长度<=1;
长处:疾速经常使用
瑕玷:须要分外说明两个数组,浪费了内存空间资本
var times = 0;
var quickSort = function(arr){
if(arr.length<=1){//递归完毕前提
return arr;
}
var midIndex = Math.floor(arr.length/2);//找基准点
var midIndexVal = arr.splice(midIndex,1);//取基准点的值
var left = [];
var right = [];
for(var i=0;i<arr.length;i++){
if(arr[i]<midIndexVal){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
console.log("第"+(++times)+"次排序后:"+arr);
}
return quickSort(left).concat(midIndexVal,quickSort(right));//递归实行
}
quickSort([2,5,4,1,7,3,8,6,9,0]);
out:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]