如果Quicksort中有两个以上相同的元素,而且pivot也是相同的数字......我们如何对它进行排序? 例如:23,19,45,21,90,5,93,45,31,45 在这个数组中考虑45
答案 0 :(得分:0)
使用Hoare like partition scheme,45作为pivot,以
开头 0 1 2 3 4 5 6 7 8 9 indices
23 19 45 21 90 5 93 45 31 45 data
从左侧扫描> =枢轴,从右侧扫描< = pivot
ll rr
23 19 45 21 90 5 93 45 31 45
23 19 45 21 90 5 93 45 31 45 swap (both are 45, so no change)
ll rr
23 19 45 21 90 5 93 45 31 45
23 19 45 21 31 5 93 45 90 45 swap
ll rr
23 19 45 21 31 5 93 45 90 45
23 19 45 21 31 5 45 93 90 45 swap
rr ll
23 19 45 21 31 5 45 93 90 45 rr and ll crossed, rr = 6
接下来的两个电话将是快速排序(0,6),快速排序(7,9)
我们如何对quicksort(7,9)进行排序?
0 1 2 3 4 5 6 7 8 9 indices
93 90 45 again assume pivot is 45
ll rr
93 90 45
45 90 93 swap
rr ll
45 90 93 rr and ll crossed, rr = 7
接下来的两个电话将是快速排序(7,7),快速排序(8,9)