概述
快速排序的基本思想是通过一趟排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。
算法步骤:
1.从数列中挑出一个元素,称为 “哨兵”(sentry),
2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
function quickSort(left, right) {
if (left < right) {
let sentry = getSentry(left, right);
quickSort(left, sentry);
quickSort(sentry + 1, right);
}
}
function getSentry(left, right) {
let sentry = arr[left],i = left,j = right;
while (i < j) {
while (i < j && arr[j] >= sentry)
j--;
arr[i] = arr[j];
while (i < j && arr[i] <= sentry)
i++;
arr[j] = arr[i];
}
arr[i] = sentry;
return i;
}
let arr = [5, 4, 8, 9, 7, 2, 3, 1, 6];
quickSort(0, arr.length - 1);
console.log(arr); //[1,2,3,4,5,6,7,8,9]
</script>
</body>
</html>
最后
以上就是强健冰淇淋为你收集整理的Javascript快速排序的全部内容,希望文章能够帮你解决Javascript快速排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复