【发布时间】:2019-01-10 14:51:53
【问题描述】:
问题是快速排序单词 ELECTRONIC。我正在手动处理每一行,并且给出的解决方案是逐步的。在第一步之后,我的状态与解决方案不同,不明白为什么。
我从ETC(位置 0,4 和 9)的中值中选择枢轴并选择 E。这个枢轴与最后一个位置 9 交换,并给出:
0123456789
CLECTRONIE
我从左侧的C 增加 i 并从右侧的I 减少 j 并最终交换位置 1(L) 和 4(C) 给予
0123456789
CCELTRONIE
继续分别递增和递减 i 和 j,最终在位置 3 与 i 交叉,L,这与位置 9 处的枢轴交换给出:
0123456789
CCEETRONIL
现在枢轴在位置 3,我认为分区会是
CCE |E| TRONIL
但我的解决方案是:
Quicksort ELECTRONIC
choose pivot: median(E,T,C)=E
partition using E: ECC|E|LTRONI
...
我知道 Sl 和 Sr 中的字母是相同的,但我认为顺序很重要。谁能确定我哪里出错了,或者解决方案如何获得这种状态?任何事情都值得赞赏。
【问题讨论】:
-
通常如果枢轴被交换到数组的末尾,然后在分区后交换回来,它基于 lomuto partition scheme ,而你所拥有的是 hoare partition scheme 的变体。
标签: algorithm sorting quicksort theory