排序算法 五快速排序

Posted 派先生的算法小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法 五快速排序相关的知识,希望对你有一定的参考价值。

快速排序是效率最高的排序算法之一,与归并排序一样有着广泛的应用。


【算法介绍】

核心思想:分而治之

①将数列根据第一个数字分为两段,其左端是小于该数字的,右端是大于该数字的

②再次对分割出的左右两段进行操作


不难看出,对于①步骤结束后,是左右两段排序的子问题,所以一般情况下快速排序利用递归实现。


还是上实例吧:

例如数列:

6
3 7 13 5 4 8 6

(1)默认选中操作区间的第一个数字为关键字:

6
3
7 13
5 4
8 6

(2)①设置右端点j,从右向左找到"小于等于"关键字的数








j
6
3
7 13
5 4
8 6


②设置左端点i,从左向右寻找"大于"关键字的数




i




j
6
3
7 13
5 4
8 6

③交换i和j:



i




j
6
3
6 13
5 4
8 7

④j继续寻找"小于等于"关键字的数:



i


j

6
3
6 13
5 4
8 7

⑤i继续寻找"大于"关键字的数:




i
j

6
3
6 13
5 4
8 7

⑥交换i和j:




i
j

6
3
6 4 5 13
8 7

⑦j继续寻找"小于等于"关键字的数:




i j


6
3
6 4 5 13
8 7

⑧i继续寻找"大于"关键字的数过程中与i和j重叠,循环结束





ij


6
3
6 4 5 13
8 7

⑧交换关键字与i,一趟结束:





i、j


5
3
6 4 6 13
8 7

⑨至此,区间被分为"小于等于6"与"大于6"两部分,继续递归操作[1,4]区间[6,8]区间……(中间的i(j)位置的数字已经在正确的位置上了,无需再排序):





ij


5
3
6 4 6 13
8 7

【代码实现】

一趟操作: