js---数组排序法(冒泡排序;快速排序)

1.冒泡排序

  原理:将数组的相邻两个元素进行比较,大的就往后移,小的往前,依次比较并且进行递减迭代。

    var arr =[54,36,89,1,3,5,2];

    function sortArr(arr){
        if(arr&&arr.length>0){
            for(let i=0;i<arr.length;i++){
                for(let j=0;j<arr.length-1-i;j++){
                    if(arr[j]>arr[j+1]){
                        let temp = arr[j];
                            arr[j] = arr[j+1];
                            arr[j+1] = temp;
                           //变量的解构赋值
                         /*
                          [arr[j],arr[j+1]]=[arr[j+1],arr[j]]
                       */
                    }
                }
            }
        }
        return arr;
    }
    sortArr(arr);         

 

 

 

 

 

 

3.快速排序法

  原理:选择一个基准点,一般选折为Math.floor(arr.length/2)为基准点;再把每个元素和基准点进行比较,形成两个子集,反复比较,直到所有元素只剩下 一个位置。

      function quickSort(arr){
        if(arr.length<=1){
            return arr;
        }
        let centerIndex = Math.floor(arr.length/2);
        let centerValue = arr.splice(centerIndex,1)[0];
        let left = [],right = [];
        for(let i =0;i<arr.length;i++){
            if(arr[i]<centerValue){
                left.push(arr[i])
            }else{
                right.push(arr[i])
            }
        }
        return quickSort(left).concat([centerValue],quickSort(right))
    }
    quickSort(arr)

 

posted @ 2018-03-22 13:41  面包_girl  阅读(323)  评论(0编辑  收藏  举报
/* 鼠标点击文字特效 */