js中数组排序三种方法

75 阅读1分钟

1.冒泡排序 两两比较

  function bubbleSort(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 chooseSort(arr){
​
•            //确定几轮
​
•            for(var i=0;i<arr.length-1;i++){
​
•                //第一轮都和第一个比较
​
•                for(var j = i+1;j<arr.length; j++){
​
•                  //谁小放前面
​
•                  if(arr[i] > arr[j]){
​
•                    var temp = arr[i];
​
•                    arr[i] = arr[j];
​
•                    arr[j] = temp;
​
•                  }
​
•                }
​
•            }
​
•            return arr;
​
•        }

3.快速排序

 function quickSort(arr){
​
•            //递归结束条件
​
•            if(arr.length<=1){
​
•                return arr;
​
•            }
​
•            //取中间的值以及中见下标
​
•            var 
​
•            midIndex = parseInt(arr.length / 2),
​
•            midVaule = arr[indIndex],
​
•            leftArr = [],  //创建左右数组
​
•            rightArr = [];
​
•            //遍历数组,没一个值和中间的值作比较。大的放右侧数组,小的放左侧数组
​
•            for(var i=0;i<arr.length;i++){
​
•                //如果是中间小标的,跳出本次循环(不用中间值和自身比较)
​
•                if(i == midIndex){
​
•                    continue;
​
•                }
​
•                if(arr[i]<= midValue){
​
•                    leftArr.push(arr[i]);
​
•                }else{
​
•                    rightArr.push(arr[i]);
​
•                }
​
•            }
​
•            //利用递归处理左右数组
​
•            var res = quickSort(leftArr).concat(midValue).concat(quickSort(rightArr));
​
•            return res;
​
•        }