【发布时间】:2012-08-08 16:16:57
【问题描述】:
我正在尝试研究各种排序和搜索算法,以准备本周二即将进行的测试。一切都很顺利,直到我使用了快速排序算法。我没有书或任何其他资源,所以我上网开始阅读SparkNote。我以为我理解了文字,我什至阅读了我在网上找到的PowerPoint 的快速排序算法部分。
但是,SparkNote 在算法分步过程的页面上提供了一个示例,但没有显示最初排列列表的步骤。给出的列表是[5 9 3 8 6 4 2 1 7 0]。根据 SparkNotes,排列后的列表,左侧的值小于枢轴(即 5),右侧的值大于枢轴,为[0 3 4 2 1 5 8 6 7 9]。但是,当我尝试自己完成这些步骤时,我不断收到[ 4 0 3 1 2 5 6 8 7 9 ]。
我采取的程序是:
5 9 3 8 6 4 2 1 7 0 // The initial list. Pivot = 5
5 0 3 8 6 4 2 1 7 9 // Switched 0 and 9.
5 0 3 1 6 4 2 1 7 9 // Switched 8 and 1
5 0 3 1 2 4 6 8 7 9 // Switched 6 and 2
4 0 3 1 2 5 6 8 7 9 // Switched 4 and 5 because the lines that point to the
// greater and smaller numbers crossed.
我的错误在哪里?另外,我看到小于5的数字在左边,大于5的数字在右边,那么,我的错误真的会影响排序吗?
【问题讨论】:
-
有许多不同的方法来对数组进行分区以进行快速排序。只需谷歌“快速排序分区”,您就会找到多个示例。
标签: algorithm sorting quicksort