【发布时间】:2012-01-08 13:13:09
【问题描述】:
据我了解,冒泡排序(低效版本)的作用如下:
2 3 8 6 23 14 16 1 123 90 (10 elements)
- 比较元素
[0]和元素[1] - 如果
[0]大于[1],则交换完成。 - 如果
[1]大于[0],则没有完成交换。
然后冒泡排序将移动到比较元素 [1] 和 [2] 等等,总共创建 9 次交换。
但是,有没有办法保证在第一次通过时,最高的数字将在正确的位置 [9],而在第二次通过时,两个最高的数字将在正确的位置[7] 和 [8]?
【问题讨论】:
-
我不明白这个问题。还有其他的排序算法(quicksort),有理论结果排序至少有O(n log n)复杂度。
-
我一直在研究快速排序,但我认为我不太了解它的实际作用。您介意对它与冒泡排序的不同之处进行基本解释吗?
-
不,有很好的书籍(在图书馆)解释了这一点。不要害羞看书;他们的解释比论坛好得多。
-
@user994559 你到底在问什么?
-
冒泡排序对数组执行多次遍历。关于各种排序算法(快速排序、冒泡排序、插入排序等)的维基百科文章往往相当不错;它们包括工作中算法的动画。 (您所描述的只是一次通过;冒泡排序必须执行多次。我第一次阅读您的问题时,我的印象是您认为一次通过就是整个算法。)
标签: c bubble-sort