快速排序算法使用中间元素作为枢轴

时间:2015-03-03 11:57:20

标签: algorithm sorting quicksort

我需要帮助了解快速排序算法的工作原理。我一直在观看教学视频,但仍未能完全掌握它。

我有一个未排序的列表:1,2,9,5,6,4,7,8,3 我必须使用6作为枢轴来快速排序。 我需要在每个分区过程之后看到列表的状态。

我的主要问题是了解枢轴之前和之后元素的顺序。因此,在这种情况下,如果我们制作6个枢轴,我知道数字1 - 5将在6之前,7 - 9将在此之后。但是,在上面的列表中,数字1 - 5的顺序是什么,7-9是第一个分区?

这是我想要使用的分区算法(在我使用中间元素作为我的初始支点):

  1. 确定枢轴,并将枢轴与列表的第一个元素交换。
  2. 假设索引smallIndex指向小于pivot的最后一个元素。索引smallIndex初始化为列表的第一个元素。

    1. 对于列表中的其余元素(从第二个元素开始) 如果当前元素小于数据透视

      一个。增量smallIndex 湾使用smallIndex指向的数组元素交换当前元素。

    2. 交换第一个元素,即枢轴,使用smallIndex指向的数组元素。

    3. 如果任何人都可以在算法列表中发生的每一次小改动后显示列表,那就太棒了。

1 个答案:

答案 0 :(得分:3)

没关系。

重要的是 - 分区过程断言的所有内容 - 在运行之后,中心点的左侧没有出现大于枢轴的值,并且没有值右侧的值小于枢轴值。

然后在每个半部分的后续递归调用中处理两个分区的内部顺序。