【发布时间】:2015-12-02 22:05:21
【问题描述】:
我在学习快速排序,发现算法解释了here
据我所知,但我在其中一个步骤中有一个问题。
有人可以正确地解释我在枢轴 57 保持在其正确位置之前的步骤是什么,如果这一点中的数字 76 如图所示是 7 吗?
我认为如果读者首先看到幻灯片中解释的步骤会更有帮助,因为我发现还有许多其他不同的方法可以解释快速排序算法。
已编辑: 我猜最后的排序会像
24 49 16 38 55 21 36 9 *7 *57 81 85 63 79 74 85 97 61 77 70 *68。 (如 nullpointer 所述)
当蓝色发现 68 作为右侧最大元素并且跳过检查较小元素作为蓝色交叉/遇到红色索引时,流是否停止了?
【问题讨论】:
-
你会用蓝色跳过 7,用红色在 7 处停止,比
76向右移动一个元素 -
分区步骤的目的是确定所有小元素都放在大元素的左侧。小/大分类是通过与“枢轴”值进行比较来决定的。为了让算法进步,必须确保至少有一个小元素和一个大元素。
-
@YvesDaoust 正如你所提到的,应该有一个小的 AND 一个大的(需要两个数字),在上述情况下的流程是什么,因为只有一个元素留待比较。
-
当只剩下一个元素时,分区是没有意义的。
-
@YvesDaoust 你能根据幻灯片中解释的流程告诉我最后一个问题的答案吗?我担心的是跳过检查较小元素部分?
标签: algorithm sorting quicksort