algorithm - 如何使用我自己选择的数据透视表(逐步)对这些数据进行快速排序

标签 algorithm sorting quicksort

我有数据(3 是主元):

281374

我从左向右移动两个指针

首先我有2和4所以我什么都不交换

然后我有 8 和 7 所以我交换并有:

273184

现在我在 3 和 1 有品脱,所以我交换:

271384

现在 left pointer = rightpointer - 1 所以我应该快速对这些进行排序:

271 | 384

分别对吗?

但如果我这样做,我会得到这样的东西:

127 | 348

这不是排序数据!

我错了什么?

最佳答案

问题是:

then i have 8 and 7 so i swap and have:

273184

您不会交换这些值。左边大于枢轴的所有东西都必须放在右边,右边低于枢轴的所有东西都必须放在左边。但是 7 和 8 都大于主元元素。

看到人们在跳快速排序算法: http://www.youtube.com/watch?v=ywWBy6J5gz8

HTH

关于algorithm - 如何使用我自己选择的数据透视表(逐步)对这些数据进行快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17277605/

相关文章:

perl - 你如何对 Data::Dumper 的输出进行排序?

C++ - 以特定方式对 vector 中的字符串进行排序

c++ - 如何定义自定义比较函数以根据一维数组排序对矩阵进行排序

xml - 没有 XML 模式的单 channel EDI 解析 - 可能吗?

algorithm - 鼓声识别算法

java - java中霍尔分区的正确性

c++ - 快速排序中的交换功能给出错误的输出

algorithm - Cormen 快速排序

algorithm - 在基于平铺 map 的游戏中访问圆形平铺的快速算法

c - 确定最大质因数