数组排序

1.冒泡排序

function sort(arr){
    for(var i = 0;i<arr.length-1;i++){
        for(var j =0; j<arr.length-i-1;j++){
             if(arr[j]>arr[j+1]){
                var temp = arr[j];
                arr[j]=arr[j+1];
               arr[j+1]=temp;
          }
     }
   }
return arr;
}

2.选择排序

function selectSort(arr) {
for(var i = 0; i < arr.length; i++) { //遍历数组
var minIndex = i; //i是数组最小值的索引
for(j = i + 1; j < arr.length; j++) {
if(arr[minIndex] > arr[j]) {
minIndex = j;
}
}
if(i != minIndex) { //假设的刚好就是最小值。
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
return arr;

}

3.快速排序

思路:获取数组的中间值,截取出来

   遍历数组,用数组的每一项去和中间值比较,比较的结果分别放在两个数组里面

   递归:将分隔到左右的两个数组在排序,知道数组的长度等于1

   将结果通过concat进行连接

function quickSort(array){
if(Array.isArray(array)){
if(array.length<=1){
return array;
}//递归一定要写初始值
var minIndex = Math.floor(array.length/2);//取出数组中间值的下标
var minValue = array.splice(minIndex,1)[0];//通过下标把数组的中间值截取出来
var left = [];//定义一个新数组,用来存放比中间值小的值
var right = [];//定义一个新数组,用来存放比中间值大的值
for(var i = 0;i<array.length;i++){
if(array[i]<minValue){
left.push(array[i]);
}else{
right.push(array[i]);
}
}
return quickSort(left).concat(minValue,quickSort(right));
}else{
alert("好好写");
}
}

原文地址:https://www.cnblogs.com/sun765/p/7930762.html