氣泡排序是乙個簡單的通過元素的兩兩比較,將陣列內的無序的元素進行有序的排列.
1.原理:比較兩個相鄰的元素,將值大的元素交換到右邊
2.思路:依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。
(1)第一次比較:首先比較第一和第二個數,將小數放在前面,將大數放在後面。(2)比較第2和第3個數,將小數 放在前面,大數放在後面。
…(3)如此繼續,知道比較到最後的兩個數,將小數放在前面,大數放在後面,重複步驟,直至全部排序完成
(4)在上面一趟比較完成後,最後乙個數一定是陣列中最大的乙個數,所以在比較第二趟的時候,最後乙個數是不參加比較的。
(5)在第二趟比較完成後,倒數第二個數也一定是陣列中倒數第二大數,所以在第三趟的比較中,最後兩個數是不參與比較的。
(6)依次類推,每一趟比較次數減少依次
public
class
paixutest
;sort
(a);
system.out.
println
(arrays.
tostring
(a));}
// 建立排序的方法
public
static
void
sort
(int[
] a)}}
}}
我們可以看到要排序的陣列為
(1)int a = ;
(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]
到目前位置已經為有序的情形了。
(1)由此可見:n個數字要排序完成,總共進行n-1趟排序,每i趟的排序次數為 (n-i)次,所以可以用雙重迴圈語句,外層控制迴圈多少趟,內層控制每一趟的迴圈次數
每進行一趟排序,就會少比較一次,因為每進行一趟排序都會找出乙個較大值。如上例:第一趟比較之後,排在最後的乙個數一定是最大的乙個數,第二趟排序的時候,只需要比較除了最後乙個數以外的其他的數,同樣也能找出乙個最大的數排在參與第二趟比較的數後面,第三趟比較的時候,只需要比較除了最後兩個數以外的其他的數,以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了演算法的量。
簡單的氣泡排序
氣泡排序的原理非常簡單,它重複地走訪過要排序的數列,一次比較兩個元 素,如果他們的順序錯誤就把他們交換過來。比較相鄰的元素。如果第乙個比第二個大 公升序 就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步 做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除...
氣泡排序解析
listvs new list var result getlist vs 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。比較的總次數就是 9 1 9 2 9...
簡單的排序之氣泡排序
作為乙個沒有任何程式設計基礎的人來說,新學一門程式語言是一件比較困難的事情。語法和思維方式的轉變是乙個難點,但也還好。最困難的地方,是因為不常使用而導致的遺忘。因此決定每每學到什麼新東西,在這裡記錄下來,以便以後常讀常新。今天寫的便是昨晚看到的氣泡排序。假設這裡有乙個陣列,現在要將這個陣列從大到小排...