概述
快速排序
1、从数列中挑出一个元素,称为 “基准”(pivot);
2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
2、递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;
- 简单方法
function kp(arr, num = arr[0]) {
let base_num = num
let right_arr = []
let left_arr = []
for (let i = 1; i < arr.length; i++) {
if (arr[i] < base_num) {
left_arr.push(arr[i])
} else {
right_arr.push(arr[i])
}
}
if (left_arr.length > 1) left_arr = kp(left_arr)
if (right_arr.length > 1) right_arr = kp(right_arr)
return [...left_arr, base_num, ...right_arr]
}
- 标准方法
Array.prototype.quickSort = function (begin = 0, end = this.length) {
let _arr = [...this];
const swap = (arr, a, b) => {
const temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
const quickSort = (arr,_begin,_end)=>{
if (_begin >= _end - 1) return;
let left = _begin;
let right = _end;
do {
do left++; while (left < right && arr[left] < arr[_begin]);
do right--; while (right > left && arr[right] > arr[_begin]);
if (left < right) swap(arr, left, right);
} while (left < right)
const swapPoint = left === right ? right - 1 : right;
swap(arr, _begin, swapPoint);
quickSort(arr,_begin, swapPoint);
quickSort(arr,swapPoint + 1, _end);
return _arr;
}
return quickSort(_arr,begin,end);
}
最后
以上就是酷酷唇膏为你收集整理的Js 快速排序快速排序的全部内容,希望文章能够帮你解决Js 快速排序快速排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复