我正在复习考试,其中一个练习题如下:
在两次冒泡排序迭代后给出数组的内容(假设首先选择数组左侧的最小值
43 16 99 12 48 14 62
给出的答案是:
12 14 43 16 99 48 62
我一直在查看我的笔记,试图找出为什么这是正确答案,但我不知道为什么。我在谷歌和维基百科上找到了冒泡排序的例子,虽然这些对我来说很有意义,但它们也很简单,但这更难。
有人可以解释一下 12 14 43 16 99 48 62 是怎么回答的吗?
我正在复习考试,其中一个练习题如下:
在两次冒泡排序迭代后给出数组的内容(假设首先选择数组左侧的最小值
43 16 99 12 48 14 62
给出的答案是:
12 14 43 16 99 48 62
我一直在查看我的笔记,试图找出为什么这是正确答案,但我不知道为什么。我在谷歌和维基百科上找到了冒泡排序的例子,虽然这些对我来说很有意义,但它们也很简单,但这更难。
有人可以解释一下 12 14 43 16 99 48 62 是怎么回答的吗?
我对此感到困惑一分钟,因为确实很难看到,但是一旦您意识到他们是如何做到的,就足够简单了。尽管如此,它还是很愚蠢。
我们正在排序,使最小的数字在左边,但我们从右边迭代。所以第一个测试是比较 14 和 62,而不是交换;然后比较 48 和 14,并交换;然后是 12 和 14,什么都不做,等等。一旦你到达左端,回到右端并做第二次通过,你最终会得到给定的解决方案。
好的,这与您的老师给出的答案不同,但这是(我希望)对冒泡排序的清晰解释:
因为图片往往胜于文字: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