氣泡排序

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