快速排序的基本思想是通过一趟排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。
算法步骤:
1.从数列中挑出一个元素,称为 “哨兵”(sentry),
2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39<!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快速排序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复