algorithm - 我从解决方案中得到不同的快速排序结果

标签 algorithm sorting quicksort theory

问题是对单词 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 中的字母是一样的,但我认为顺序很重要。谁能确定我哪里出了问题,或者解决方案如何获得这种状态?任何事情都会受到赞赏。

最佳答案

您的分区实现了主要目标 - 左侧部分包含较少(或相等)的元素,右侧部分包含较大的元素。分区完成。任务 (对于当前阶段)已成功完成。

这些部分的元素顺序取决于分区实现(有不同的方案),不影响排序的正确性和速度。

关于algorithm - 我从解决方案中得到不同的快速排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54131248/

相关文章:

algorithm - Range Minimum Query <O(n), O(1)> 方法(Query)

python - 获取 x 和 y 之间的 n 个数字的列表

ios - 按 NULL NSDates 对 NSFetchedResultsController 进行排序

java - 如何根据值对Hashmultimap进行排序?

sorting - 分区功能是否给快速排序提供了引用位置?

c - 第 k 个最小的数字 - 快速排序比快速选择更快

algorithm - 如何解决不平等制度?

java - Java中根据多个参数降序排序

java - 使用 Java 对队列进行快速排序

algorithm - 坚持看似微不足道的算法任务