算法思想:
快速排序算法主要采用的是分而治之的算法思想,在每次进行快速排序的过程中,都将待排序的数字分为大于枢轴值的部分和小于枢轴值的部分。然后分别对大于部分和小于部分进行快速排序即可,知道待排序的数据元素的个数为1为止,即当low==high时停止。
枢轴值的获取:
枢轴值的获取,以及如何将待排序数据元素中大于枢轴值的元素和小于枢轴值的元素分居枢轴值的两边,是快速排序的关键。
1:对于枢轴值的选取我们可以直接选用第一个元素作为枢轴元,也可以通过随机选取的方式进行选取。
2:对于如何将待排序数据元素中大于枢轴值的元素和小于枢轴值的元素分居枢轴值的两边,我们采用左右指针的方法。
左右指针的方法
1:选取一个关键字(key)作为枢轴,一般取整组记录的第一个数/最后一个,这里采用选取序列最后一个数为枢轴。
2: 设置两个变量left = 0;right = N - 1;
3:从left一直向后走,直到找到一个大于key的值,right从后至前,直至找到一个小于key的值,然后交换这两个数。
4:重复第三步,一直往后找,直到left和right相遇,这时将key放置left的位置即可。