我需要帮助了解快速排序算法的工作原理。我一直在观看教学视频,但仍未能完全掌握它。
我有一个未排序的列表:1,2,9,5,6,4,7,8,3 我必须使用6作为枢轴来快速排序。 我需要在每个分区过程之后看到列表的状态。
我的主要问题是了解枢轴之前和之后元素的顺序。因此,在这种情况下,如果我们制作6个枢轴,我知道数字1 - 5将在6之前,7 - 9将在此之后。但是,在上面的列表中,数字1 - 5的顺序是什么,7-9是第一个分区?
这是我想要使用的分区算法(在我使用中间元素作为我的初始支点):
假设索引smallIndex指向小于pivot的最后一个元素。索引smallIndex
初始化为列表的第一个元素。
对于列表中的其余元素(从第二个元素开始) 如果当前元素小于数据透视
一个。增量smallIndex
湾使用smallIndex
指向的数组元素交换当前元素。
交换第一个元素,即枢轴,使用smallIndex
指向的数组元素。
如果任何人都可以在算法列表中发生的每一次小改动后显示列表,那就太棒了。
答案 0 :(得分:3)
没关系。
重要的是 - 分区过程断言的所有内容 - 在运行之后,中心点的左侧没有出现大于枢轴的值,并且没有值右侧的值小于枢轴值。
然后在每个半部分的后续递归调用中处理两个分区的内部顺序。