快速排序

2016-11-10  本文已影响0人  GarinZhang

基本思想:

  1. 先选择基准(一般选择中间位置)
  2. 对数组剩下的元素进行遍历,小于基准的放在基准左边,大于基准的放在基准右边
  3. 对左边和右边的元素重复调用前两步,直到只剩下一个元素为止

特点:速度快

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


var arr = [3, 2, 5, 7, 1, 4, 8];

var res = quickSort(arr);

console.log(res);  // [1, 2, 3, 4, 5, 7, 8]
上一篇 下一篇

猜你喜欢

热点阅读