JavaScirpt基础-数组排序之快速排序

简介: 快速排序

JavaScirpt基础-数组排序之快速排序

快速排序

快速排序的基本思想是通过一趟排序,将待排记录分隔成独立的两部分,
其中一部分记录的关键字均比另一部分的关键字小,
则可以分别对这两部分记录继续进行排序,以达到整个序列有序。

var a = [1, 3, 6, 38, 23, 64, 2, 34, 222, 6, 456, 221, 73];
function quickSort(array) {
var quick = function(arr) {

if (arr.length <= 1) return arr
const len = arr.length
const index = Math.floor(len >> 1)
const pivot = arr.splice(index, 1)[0]
const left = []
const right = []
for (let i = 0; i < len; i++) {
  if (arr[i] > pivot) {
    right.push(arr[i])
  } else if (arr[i] <= pivot) {
    left.push(arr[i])
  }
}
return quick(left).concat([pivot], quick(right))

}
const result = quick(array)
return result
}

quickSort(a);// [1, 2, 3, 6, 6, 23, 34, 38, 64, 73, 221, 222, 456]

目录
相关文章
|
6月前
|
算法
快排(代码的实现)
快排(代码的实现)
|
7月前
|
算法 程序员 C++
程序员必知:单链表排序(快速排序、归并排序)
程序员必知:单链表排序(快速排序、归并排序)
31 0
|
8月前
|
搜索推荐
排序算法之七:归并排序(非递归)
排序算法之七:归并排序(非递归)
排序算法之七:归并排序(非递归)
|
存储 算法 搜索推荐
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)2
296 0
|
8月前
快速排序详解(递归实现与非递归实现)
快速排序详解(递归实现与非递归实现)
|
8月前
|
算法 搜索推荐 C语言
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)
|
搜索推荐
七个常用的排序算法---快排\归排\希尔\插入\选择\冒泡\堆排(一)
七个常用的排序算法---快排\归排\希尔\插入\选择\冒泡\堆排(一)
107 0
|
存储 搜索推荐 C语言
七个常用的排序算法---快排\归排\希尔\插入\选择\冒泡\堆排(二)
七个常用的排序算法---快排\归排\希尔\插入\选择\冒泡\堆排(二)
72 0
|
存储 算法 搜索推荐
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)1
数据结构各内部排序算法总结对比及动图演示(插入排序、冒泡和快速排序、选择排序、堆排序、归并排序和基数排序等)1
238 0