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]

目录
相关文章
|
1月前
|
存储 搜索推荐 算法
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
22 1
|
6月前
|
算法
桶排序(简化版)与冒泡排序
桶排序(简化版)与冒泡排序
36 0
|
6月前
|
C语言
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
39 1
|
6月前
|
算法 测试技术 C#
【二分查找】自写二分函数的总结
【二分查找】自写二分函数的总结
|
6月前
|
搜索推荐 Java 索引
快速排序的新用法
快速排序的新用法
43 0
|
6月前
|
JavaScript 搜索推荐 前端开发
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
70 0
|
算法 搜索推荐 Shell
Shell编程之数组排序算法(冒泡排序、直接选择排序、反转排序)
1、数组排序(使用tr、sort、for) 操作步骤; 使用tr命令将数组内每个元素之间的空格替换为换行符; 之后使用sort命令按从小到大重新排序; 最后使用for循环遍历排序后的元素值。
477 0
|
算法 搜索推荐
|
搜索推荐 算法