快速排序(数据结构)

基本思想:

1,随机选择一个中心轴(一般没有要求的话选第一个)

2,将大于中心轴的数字放在中心轴的右边

3,将小于中心轴的数字放在中心轴的左边

4,分别对左右子序列重复上述操作

5,空在的一端不与中心轴进行比较,另外的一端与中心轴进行比较

这里给出一个例题进行理解:

假设对序列{48,62,35,77,55,14,35,98}进行快速排序

4862357755143598

简洁答案:

详细解释:

1,首先将48作为中心轴取出,i指向最左端,j指向最右端

48
62357755143598
ij

2,从最右端开始进行比较,98>48则,98不进行移动,j-1

48
62357755143598
ij

3,还是j与48进行比较,35<48根据上面的规则,将35放到i的位置,i+1

48
35623577551498
ij

4,这次是i与48进行比较,明显62>48,所以将62放到j的位置,j-1

48
35357755146298
ij

5,将j与48进行比较,明显18<48,将14放到i的位置,i+1

48
35143577556298
ij

6,将48与i进行比较,35<48,所以i+1

48
35143577556298
ij

7,将i与48进行比较,77>48所以进行移动,将77放到j的位置,并将j-1

48
35143555776298
ij

8,将j与48进行比较,55>58不进行移动,j-1

9,这时i==j,第一趟排序结束,将48填入到空格中。

3514354855776298
i,j

10,这时,可以将该序列以48为中心轴分为两部分,48左面为一部分,右边为一部分,再次进行快速排序。

首先看左边这一部分

351435

将35作为中心轴

35
1435
ij

中心轴与35进行比较,发现相等,这值不移动,将j-1

35
1435
ij

将j与35比较,14<35,将14放入i的位置,i+1

35
1435
j,i

这时i==j,所以排序结束,将35放到空中,至此左排序结束

143535
j,i

第二趟,第三趟的右排序与上述方式相同这里不再进行详细介绍,只给出最终答案进行参考

55627798

所以最终的快排顺序为:

1435354855627798

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值