问题是要对单词ELECTRONIC快速排序。我正在手动处理每一行,并且逐步给出了解决方案。第一步之后,我与解决方案的状态有所不同,并且不明白为什么。
我从ETC
的中位数(位置0,4和9)中选择枢轴,然后选择E
。此枢轴与最后一个位置9交换,并给出:
0123456789
CLECTRONIE
我将i从左侧的C
递增,将j从右侧的I
递减,并最终交换位置1({L
)和4(C
)给出< / p>
0123456789
CCELTRONIE
继续分别递增和递减i和j,最终在第3个位置L
与i交叉,并与第9个位置的枢轴交换,得到:
0123456789
CCEETRONIL
现在枢轴位于位置3,我以为分区应该是
CCE |E| TRONIL
但我有解决方案:
Quicksort ELECTRONIC
choose pivot: median(E,T,C)=E
partition using E: ECC|E|LTRONI
...
我知道Sl和Sr中的字母相同,但是我认为顺序很重要。谁能确定我哪里出了问题,或者解决方案如何获得这种状态?任何事情都值得赞赏。
答案 0 :(得分:2)
您的分区达到了主要目标-左侧部分包含较少(或相等)的元素,右侧部分包含较大的元素。分区完成。任务 (当前阶段)已成功完成。
这些部分中元素的顺序取决于分区实现(有不同的方案),并且不影响排序的正确性和速度。