快速排序的思想

Posted wjinhhua

tags:

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

在待排序的n个元素序列中,任意选取一个元素(通常选第一个)作为基准,然后从右边开始选取比较,直到选取的元素比基准元素小,并交换位置,然后从左边开始选取比较,直到选取的元素比基准元素大,并交换位置。完成一轮后,从基准划分为高低两部分序列,从低序列开始与第一轮一样,循环完成排序,再对高序列完成排序,从而确定序列顺序。

举例:

6,8,7,9,0,1,3,2,4,5
第一轮:选取6为基准,
右 5与6比,小,于是5与6交换,5,8,7,9,0,1,3,2,4,6
左 8与6比,大,于是8与6交换,5,6,7,9,0,1,3,2,4,8
右 4与6比,小,于是4与6交换,5,4,7,9,0,1,3,2,6,8
左 7与6比,大,于是7与6交换,5,4,6,9,0,1,3,2,7,8
右 2与6比,小,于是2与6交换,5,4,2,9,0,1,3,6,7,8
左 9与6比,大,于是9与6交换,5,4,2,6,0,1,3,9,7,8
右 3与6比,小,于是3与6交换,5,4,2,3,0,1,6,9,7,8
左 0与6比,小,于是不交换, 5,4,2,3,0,1,6,9,7,8
左 1与6比,小,于是不交换, 5,4,2,3,0,1,6,9,7,8
然后把6之前的分为低序列,6以后的分为高序列

第二轮:对低序列5,4,2,3,0,1,选5为基准
右 1与5比,小,于是1与5交换,1,4,2,3,0,5
左 4与5比,小,于是不交换, 1,4,2,3,0,5
左 2与5比,小,于是不交换, 1,4,2,3,0,5
左 3与5比,小,于是不交换, 1,4,2,3,0,5
左0与5比,小,于是不交换, 1,4,2,3,0,5
然后把5之前的分为低序列,没有高序列

第三轮:对低序列1,4,2,3,0,选1为基准
右 0与1比,小,于是0与1交换,0,4,2,3,1
左 4与1比,大,于是4与1交换,0,1,2,3,4
右 3与1比,大,于是不交换, 0,1,2,3,4
右 2与1比,大,于是不交换, 0,1,2,3,4
然后把1之前的分为低序列,1以后为高序列

第四轮:对低序列0,只有一个元素,不用比较,确定0,1顺序
转向高序列2,3,4,选2为基准
右 4与2比 ,大,于是不交换,2,3,4
右 3与2比,大,于是不交换,2,3,4
然后把2以后为高序列,没有低序列

第五轮:没有低序列,确定0,1,2顺序,对高序列3,4,选3为基准
右 4与3比 ,大,于是不交换,3,4
然后把3以后为高序列,没有低序列

第六轮:没有低序列,确定0,1,2,3顺序,对高序列4,只有一个元素,不用比较,确定0,1,2,3,4顺序,对基准5,高序列只有一个元素,不用比较确定0,1,2,3,4,5顺序,对基准6,低序列完成比较,确定0,1,2,3,4,5,6顺序,开始高序列9,7,8的比较。选9为基准,
右 8与9比,小,于是交换,7,8,9
左 7与9比,小,于是不交换,7,8,9
然后把9之前的分为低序列,没有高序列

第七轮:对7,8序列,选7为基准
右 8与7比,大,于是不交换,7,8
然后把7之后的分为高序列,没有低序列

第八轮:对8序列,只有一个元素不用比较,确定7,8顺序,因为没有高序列确定7,8,9顺序,从而确定0,1,2,3,4,5,6,7,8,9顺序

以上是关于快速排序的思想的主要内容,如果未能解决你的问题,请参考以下文章

快速排序算法C#实现

PHP 快速排序

快速排序

数据结构--快速排序

排序-快速排序

快速排序的思想