美文网首页
2020-01-28 快速排序(原地排序)

2020-01-28 快速排序(原地排序)

作者: 人拆 | 来源:发表于2020-01-28 20:58 被阅读0次
function swap(arr, i, j) {
  const temp = arr[i]
  arr[i] = arr[j]
  arr[j] = temp
}

function partition(arr, pIndex, left, right) {
  const p = arr[pIndex]
  let startIndex = left
  for (let i = left; i < right; i++) {
    if (arr[i] < p) {
      swap(arr, i, startIndex)
      startIndex++
    }
  }
  swap(arr, startIndex, pIndex)

  return startIndex
}

function quick_sort_c(arr, left, right) {
  if (left < right) {
    let pIndex = right
    let partitionIndex = partition(arr, pIndex, left, right)
    quick_sort_c(arr, left, partitionIndex - 1 < left ? left : partitionIndex - 1)
    quick_sort_c(arr, partitionIndex + 1 > right ? right : partitionIndex + 1, right)
  }

}

function quickSort(arr) {
  const len = arr.length
  if (len <= 1) return arr

  return quick_sort_c(arr, 0, len - 1)
}

相关文章

  • 2020-01-28 快速排序(原地排序)

  • 算法笔记01-排序#2

    快速排序敢叫快速排序,那它一定得快。 快速排序 概述 快速排序也是分治排序的典型,它快,而且是原地排序。不过,要防...

  • 多语言实现快速排序算法

    快速排序: 快速排序采用“分而治之、各个击破”的观念,此为原地(In-place)分割版本。 快速排序使用分治法(...

  • 常见数据结构算法总结

    1、快速排序法 概念:排序速度非常快,采用分治思想 空间复杂度 快速排序是一种原地排序,只需要一个很小的栈作为辅助...

  • 快速排序&快速排序与归并排序的对比

    快速排序算法 快速排序算法是从上到下解决问题使用递归实现,通过巧妙的方式,实现原地排序 分析时间复杂度O(nlog...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • python部分基础二

    排序分为两种,一种原地排序,一种是复制排序 原地排序 :sort() 复制排序:sorted() Note:元组不...

  • 排序

    插入排序 选择排序 冒泡排序 归并排序 快速排序* 三路快速排序

  • 2.3快速排序

    快速排序是使用的最广得排序算法.优点:简单,适用于不同的输入数据,在一般应用中比排序算法快.是一种原地排序(只需要...

  • Datawhale | 编程第6期 Test 3

    排序 1.实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做) 归并排序 快速排序 插入排序 冒泡...

网友评论

      本文标题:2020-01-28 快速排序(原地排序)

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