我正在复习考试,其中一个练习题如下:
在冒泡排序的两次迭代后给出数组的内容(假设在数组的左侧首先选择最低值
43 16 99 12 48 14 62
给出的答案是:
12 14 43 16 99 48 62
我一直在审查我的笔记,试图弄清楚为什么这是正确的答案,但我不明白为什么。我在谷歌和维基百科上找到了冒泡排序的例子,虽然这些对我来说很有意义,但它们也很简单,这更难。
有人可以解释12 14 43 16 99 48 62是如何回答的吗?
答案 0 :(得分:2)
我对这一点感到困惑,因为确实很难看到,但是一旦你意识到他们是如何做到的,那就足够简单了。不过,这很愚蠢。
我们正在进行排序,以便最左边的数字在左边,但是我们从右边迭代。所以第一个测试是比较14和62,而不是交换;然后比较48和14,并交换;那么12和14,什么都不做,等等。一旦你到达左端,回到右端并再做一次,你将得到给定的解决方案。
答案 1 :(得分:0)
好的,这并没有给你的老师提供相同的答案,但这是(我希望)对泡沫排序的明确解释:
因为图片通常比单词更好:http://www.algolist.net/Algorithms/Sorting/Bubble_sort
在你的情况下,在第一次迭代之后:
43> 16 => 16 43 99 12 48 14 62
43< 99 => 16 43 99 12 48 14 62
99> 12 => 16 43 12 99 48 14 62
99> 48 => 16 43 12 48 99 14 62
99> 14 => 16 43 12 48 14 99 62
99> 62 => 16 43 12 48 14 62 99
第二次迭代:
16< 43 => 16 43 12 48 14 62 99
43> 12 => 16 12 43 48 14 62 99
43< 48 => 16 12 43 48 14 62 99
48> 14 => 16 12 43 14 48 62 99
48< 62 => 16 12 43 14 48 62 99
62< 99 => 16 12 43 14 48 62 99