在快速排序中引入递归和分治的概念(关于递归和分治的概念会单独写一篇来进行介绍)
快速排序的基本思想本身就是分治法通过分割,将无序序列分成兩部分其中前一部分的元素值都要小于后一部分的元素值。然后每一部分在各自递归进行上述的过程直到每一部分的长度都为1为止。
具体的过程就是当前无序区list[1.n]中任意去一个元素x(一般都是取第一个元素)作为比较的“基准”用这个基准数将当前无序区劃分为左右两个较小的无序区
list[1,i- 1]和list[i + 1n],且左边的无序子区中数据元素均小于基准元素右边的无序子区中的元素均大于或等于基准元素,洏基准数x则位于最终的排序的位置上当list[1,i- 1]和list[i + 1n]均非空时,分别对它们进行上述的划分过程直到所有的无序子区中的数据元素均已排序為止。
我们现在就依照这段代码来看一个示例:
第一次划分的过程:
x的初始值是序列的第一个元素75
各遍排序之後的状态:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。