冒泡排序

BubbleSort 比较无序列表中的每个连续元素对,如果元素不按顺序则反转元素。

以下示例说明了列表 {6,5,3,1,8,7,2,4} 上的冒泡排序(每个步骤中比较的对都封装在’**‘中):

{6,5,3,1,8,7,2,4}
{**5,6**,3,1,8,7,2,4} -- 5 < 6 -> swap
{5,**3,6**,1,8,7,2,4} -- 3 < 6 -> swap
{5,3,**1,6**,8,7,2,4} -- 1 < 6 -> swap
{5,3,1,**6,8**,7,2,4} -- 8 > 6 -> no swap
{5,3,1,6,**7,8**,2,4} -- 7 < 8 -> swap
{5,3,1,6,7,**2,8**,4} -- 2 < 8 -> swap
{5,3,1,6,7,2,**4,8**} -- 4 < 8 -> swap

经过列表的一次迭代后,我们有了 {5,3,1,6,7,2,4,8}。请注意,数组中最大的未排序值(本例中为 8)将始终到达其最终位置。因此,为了确保列表已排序,我们必须对长度为 n 的列表迭代 n-1 次。

图文:

http://i.stack.imgur.com/NJPXP.gif