JS常用的三种排序

255 阅读1分钟

冒泡排序

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

选择排序

    function selectionSort(arr) {
        var len = arr.length;
        var minIndex, temp;
        for (var i = 0; i < len - 1; i++) { //表示比较次数,不需要与自身比较所以减了1
          minIndex = i;
          for (var j = i + 1; j < len; j++) { //表示遍历数组
            if (arr[j] < arr[minIndex]) {
              minIndex = j; //将最小数的索引保存
            }
          }
          temp = arr[i];
          arr[i] = arr[minIndex];
          arr[minIndex] = temp;
        }
        return arr;
      }

快速排序

    function quickSort(arr) {
        if (arr.length <= 1) {
          return arr;
        }
        var pivotIndex = parseInt(arr.length / 2);
        var pivot = arr.splice(pivotIndex, 1)[0];
        var left = [];
        var right = [];
        for (var i = 0; i < arr.length; i++) {
          if (arr[i] < pivot) {
            left.push(arr[i]);
          } else {
            right.push(arr[i]);
          }
        }
        return quickSort(left).concat([pivot], quickSort(right));
    }