在排序快速排序中,如果有超过2个相同的数字。我们如何排序?

时间:2017-06-25 00:26:33

标签: sorting quicksort

如果Quicksort中有两个以上相同的元素,而且pivot也是相同的数字......我们如何对它进行排序? 例如:23,19,45,21,90,5,93,45,31,45 在这个数组中考虑45

1 个答案:

答案 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)