魔力视频hd版下载:9.9.1 快速排序算法(2)

来源:百度文库 编辑:中财网 时间:2024/05/09 05:21:07

9.9.1 快速排序算法(2)

7.继续第5行,因为low=3

8.第7行,当L.r[high]= L.r[9]=90,pivotkey=50,L.r[high]>pivotkey,因此第8行,high‐‐,此时high=8。继续循环,L.r[8]=60>50,high‐‐,此时high=7。L.r[7]=80>50,=6。L.r[6]=40<50,退出循环。

9.第9行,交换L.r[low]=L.r[3]=50与L.r[high]=L.r[6]=40的值,使得L.r[3]=40,L.r[6]=50,如图9‐9‐4所示。

图9-9-4

10.第10行,当L.r[low]= L.r[3]=40,pivotkey=50,L.r[low]50,退出循环。

11.第12行,交换L.r[low]=L.r[5]=70与L.r[high]=L.r[6]=50的值,使得L.r[5]=50,L.r[6]=70,如图9‐9‐5所示。

图9-9-512.再次循环。因low=5 (点击查看大图)图9-9-6

13.最后第14行,返回low的值5。函数执行完成。接下来就是递归调用“QSort(L,1,5‐1);”和“QSort(L,5+1,9);”语句,对{20,10,40,30}和{70,80,60,90}分别进行同样的Partition操作,直到顺序全部正确为止。我们就不再演示了。

通过这段代码的模拟,大家应该能够明白,Partition函数,其实就是将选取的pivotkey不断交换,将比它小的换到它的左边,比它大的换到它的右边,它也在交换中不断更改自己的位置,直到完全满足这个要求为止。