基本思想:
1,随机选择一个中心轴(一般没有要求的话选第一个)
2,将大于中心轴的数字放在中心轴的右边
3,将小于中心轴的数字放在中心轴的左边
4,分别对左右子序列重复上述操作
5,空在的一端不与中心轴进行比较,另外的一端与中心轴进行比较
这里给出一个例题进行理解:
假设对序列{48,62,35,77,55,14,35,98}进行快速排序
简洁答案:
详细解释:
1,首先将48作为中心轴取出,i指向最左端,j指向最右端
2,从最右端开始进行比较,98>48则,98不进行移动,j-1
3,还是j与48进行比较,35<48根据上面的规则,将35放到i的位置,i+1
4,这次是i与48进行比较,明显62>48,所以将62放到j的位置,j-1
5,将j与48进行比较,明显18<48,将14放到i的位置,i+1
6,将48与i进行比较,35<48,所以i+1
7,将i与48进行比较,77>48所以进行移动,将77放到j的位置,并将j-1
8,将j与48进行比较,55>58不进行移动,j-1
9,这时i==j,第一趟排序结束,将48填入到空格中。
10,这时,可以将该序列以48为中心轴分为两部分,48左面为一部分,右边为一部分,再次进行快速排序。
首先看左边这一部分
将35作为中心轴
中心轴与35进行比较,发现相等,这值不移动,将j-1
将j与35比较,14<35,将14放入i的位置,i+1
这时i==j,所以排序结束,将35放到空中,至此左排序结束
第二趟,第三趟的右排序与上述方式相同这里不再进行详细介绍,只给出最终答案进行参考
所以最终的快排顺序为: