「氣泡排序」詳解。以C 舉例。

2021-10-09 16:56:44 字數 2227 閱讀 4179

定義:他重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從z到a)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

原理:

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素做同樣的工作,從開始第一對結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,知道沒有任何一對數字需要比較。

氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不會再交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序

演算法。

(1)要排序陣列:

(2)第一趟排序

第一次排序:10和1比較,10大於1,交換位置       [1,10,35,61,89,36,55]

第二趟排序:10和35比較,10小於35,不交換位置  [1,10,35,61,89,36,55]

第三趟排序:35和61比較,35小於61,不交換位置  [1,10,35,61,89,36,55]

第四趟排序:61和89比較,61小於89,不交換位置  [1,10,35,61,89,36,55]

第五趟排序:89和36比較,89大於36,交換位置   [1,10,35,61,36,89,55]

第六趟排序:89和55比較,89大於55,交換位置   [1,10,35,61,36,55,89]

第一趟總共進行了六次比較,排序結果:                    [1,10,35,61,36,55,89]

(3)第二趟排序

第一次排序:1和10比較,1小於10,不交換位置  1,10,35,61,36,55,89

第二次排序:10和35比較,10小於35,不交換位置    1,10,35,61,36,55,89

第三次排序:35和61比較,35小於61,不交換位置     1,10,35,61,36,55,89

第四次排序:61和36比較,61大於36,交換位置   1,10,35,36,61,55,89

第五次排序:61和55比較,61大於55,交換位置   1,10,35,36,55,61,89

第二趟總共進行了5次比較,排序結果:1,10,35,36,55,61,89

(4)第三趟排序

1和10比較,1小於10,不交換位置  1,10,35,36,55,61,89

第二次排序:10和35比較,10小於35,不交換位置    1,10,35,36,55,61,89

第三次排序:35和36比較,35小於36,不交換位置     1,10,35,36,55,61,89

第四次排序:36和61比較,36小於61,不交換位置   1,10,35,36,55,61,89

第三趟總共進行了4次比較,排序結果:1,10,35,36,55,61,89

到目前位置已經為有序的情形了。

using system;

namespace stars

;

console.writeline("排序之前的陣列:");

foreach (int item in arr)

console.writeline();

for (int i = 0; i < arr.length - 1; i++)}}

console.writeline("排序之後的陣列:");

foreach (int item in arr)

console.writeline();

console.readkey();}}

}

//執行結果:

排序之前的陣列:

54691031728

排序之後的陣列:

12345678910

C 氣泡排序詳解

using system using system.collections.generic using system.linq using system.text namespace 氣泡排序 定義乙個要排序的陣列,這裡可以隨便寫多少個數 for int i 0 i numbers.length 1...

C 氣泡排序詳解

今天寫一簡單的氣泡排序,帶有詳細的中文注釋,新手一定要看看!因為這是找工作面試時經常 筆試 要考的題目。using system using system.collections.generic using system.linq using system.text namespace 氣泡排序 定...

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...