1

我正在复习考试,其中一个练习题如下:

在两次冒泡排序迭代后给出数组的内容(假设首先选择数组左侧的最小值

43 16 99 12 48 14 62

给出的答案是:

12 14 43 16 99 48 62

我一直在查看我的笔记,试图找出为什么这是正确答案,但我不知道为什么。我在谷歌和维基百科上找到了冒泡排序的例子,虽然这些对我来说很有意义,但它们也很简单,但这更难。

有人可以解释一下 12 14 43 16 99 48 62 是怎么回答的吗?

4

2 回答 2

2

我对此感到困惑一分钟,因为确实很难看到,但是一旦您意识到他们是如何做到的,就足够简单了。尽管如此,它还是很愚蠢。

我们正在排序,使最小的数字在左边,但我们从右边迭代。所以第一个测试是比较 14 和 62,而不是交换;然后比较 48 和 14,并交换;然后是 12 和 14,什么都不做,等等。一旦你到达左端,回到右端并做第二次通过,你最终会得到给定的解决方案。

于 2012-04-26T13:14:42.430 回答
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

于 2012-04-26T13:22:49.280 回答