小练习5:一些简单的排序算法

113 阅读1分钟
  • 冒泡排序
    • 冒泡排序顾名思义就是将数组中较大的数上浮,排在后面,将较小的数放在下面。
    • 部分代码如下:
    //两两比较,把最大的值排到最后
    for(var i = 0; i < a.length - 1; i++){ //比较轮数
        for (var j = 0; j < a.length - 1 - i; j++){//比较过程
            if(a[j] > a[j+1]){
                var temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
    }
  • 快速排序
    • 快速排序主要通过递归实现,首先将数组中的中间项提出来,再将数组中其他数据依次和中间项比较,小的放在left数组,大的放在right数组,依次类推,再将left和right数组重复次操作,最后完成排序
    function quickSort(n) {
        //处理边界
        if(n.length <= 1){
            return n;
        }
        var pointIndex = Math.floor(n.length/2);
        //通过中间索引,把中间项从数组中删除
        var pointView = n.splice(pointIndex,1)[0];
        var left = [];//左手边
        var right = [];//右手边
        for(var i = 0; i < n.length; i++){
            if(n[i] <= pointView){
                left.push(n[i]);
            }else{
                right.push(n[i]);
            }
        }
        return quickSort(left).concat(pointView,quickSort(right));
    }