美文网首页
排序算法6-快速排序

排序算法6-快速排序

作者: 小杰66 | 来源:发表于2021-04-18 11:27 被阅读0次

快速排序

  • 平均时间复杂度:O(nlogn)
  • 最好情况:O(nlogn)
  • 最坏情况:O(n^2)
  • 空间复杂度:O(logn)
  • 排序方式:In-place
  • 稳定性:不稳定

算法步骤:
1.从数列中挑出一个元素作为基准;
2.对数列进行分区操作,所有比基准小的摆在基准前面,所有比基准值大的摆在基准后面
3.递归地对基准的前后序列重复上面的操作

function quickSort(arr, left = 0, right = arr.length - 1) {
  if (left < right) {
    let index = partition(arr, left, right);
    quickSort(arr, left, index - 1);
    quickSort(arr, index + 1, right);
  }
}

function partition(arr, left, right) {
  let temp;
  //默认取第一个元素即left位置作为基准值
  //index用于标记比基准值大的第一个元素的坐标
  let index = left + 1;
  for (let i = index; i <= right; i++) {
    if (arr[i] < arr[left]) {
      temp = arr[index];
      arr[index] = arr[i];
      arr[i] = temp;
      index++;
    }
  }
  //将基准值与index前一位兑换就得到基准前都是小于基准的,基准后都是大于基准的
  temp = arr[index - 1];
  arr[index - 1] = arr[left];
  arr[left] = temp;
  return index - 1;
}

相关文章

网友评论

      本文标题:排序算法6-快速排序

      本文链接:https://www.haomeiwen.com/subject/tkkhlltx.html