冒泡排序
出自 MBA智库百科(https://wiki.mbalib.com/)
冒泡排序(Bubble Sort)
目錄 |
冒泡排序是一種電腦科學領域的常用的較簡單的排序演算法。如何設計出複雜度儘可能低且函數復用性高的演算法是演算法效率和通用性的關鍵內容。
它重覆地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重覆地進行,直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。
冒泡排序的基本原理是兩兩比較待排序數據的大小 ,當兩個數據的次序不滿足順序條件時即進行交換,反之,則保持不變,這樣每次最小(或最大)的結點就像氣泡一樣浮到序列的最前位置。設有 n 個數的序列,即數組 a(1)~a(n),要求按遞增(或遞減 )的順序排列,則冒泡排序法的基本演算法描述如下:
(1)把 a(n)和 a(n一1)比較 ,如果 a(n)<a(n一1) (或 a(n)>a(n一1)),則把 a(n)和 a(n—1)的值交換。
(2)再將 a(n一1)與 a(n一2)比較,如果 a(n一1)<a(n一2) (或 a(n一1)>a(n一2)),則把 a(n一1)和 a(n一2)的值交換。
(3)按第(2)步的方法處理 a(n一2)、a(n一3)、a(n一4)、??、a(2)。
(4)第(1)、(2)、(3)步組成一輪交換,交換完成後最小值(或最大值)被交換到 a(1)里。
(5)重覆第 (1)、(2)、(3)步進行第 2 輪 、第 3 輪、?? 、第n一1 輪交換。設輪數為 i,i= l、2 、3、⋯⋯、n一1,每交換一輪 ,次小值(或次大值)被交換到 a(i)里,所以每輪處理到 a(i+1)結束。n一1輪交換都完成後,數據按遞增(或遞減 )的順序排列。


