冒泡排序

方法一:

function buble(arr){
    for(var i =0;i < arr.length;i++){
        for(var j = 0;j < arr.length;j++){
            if(arr[i] < arr[j]){
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;               
            }
        }
    }
    return arr;
}
//测试代码运行时间,console.time()、console.timeEnd()
console.time("开始")
buble([2,1,3,5,4,7,3,3,3,3,6,3,4,7,2,3,7,8,9,6,343,62,64,63,2]);
console.timeEnd('开始')

方法二:

[链接描述][1]
var arr = [1,3,20,5,2,9,6,4,80,9,4];
var arrLength = arr.length;
for(var i=0;i<arrLength;i++){
  for(j=0;j<arrLength-i-1;j++){
    if(arr[j]>arr[j+1]){
      var temp = arr[j];
      arr[j] = arr[j+1];
      arr[j+1] = temp;
    }
  }
}
console.log(arr);

选择排序

function select(arr){
    for(var i = 0;i < arr.length;i++){
        for(var j = i;j < arr.length;j++){
            if(arr[i] > arr[j]){
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
select([1,3,20,5,2,9,6,4,80,9,4]);

插入排序

错误示范:
function select(arr){
    for(var i = 1;i < arr.length;i++){
        for(var j = i;j > 0;j--){
            //i需要改为j,因为需要从右到左一直进行大小比较,然后插入,再比较插入
            if(arr[i] < arr[j-1]){
                var temp = arr[i];                
                arr[i] = arr[j-1];
                arr[j-1] = temp;
            }    
        }
        
    }
    return arr;
}
select([1,3,20,5,2,9,6,4,80,9,4]);
正确代码:
function select(arr){
    for(var i = 1;i < arr.length;i++){
        for(var j = i;j > 0;j--){
            if(arr[j] < arr[j-1]){
                var temp = arr[j];                
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }  
        }
        
    }
    return arr;
}
select([1,3,20,5,2,9,6,4,80,9,4]);
    

借鉴自:
链接描述

微信公众号:天字一等


胡椒
17 声望2 粉丝