簡單的氣泡排序的解析

2021-10-01 16:02:17 字數 2134 閱讀 1923

氣泡排序是乙個簡單的通過元素的兩兩比較,將陣列內的無序的元素進行有序的排列.

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...

簡單的排序之氣泡排序

作為乙個沒有任何程式設計基礎的人來說,新學一門程式語言是一件比較困難的事情。語法和思維方式的轉變是乙個難點,但也還好。最困難的地方,是因為不常使用而導致的遺忘。因此決定每每學到什麼新東西,在這裡記錄下來,以便以後常讀常新。今天寫的便是昨晚看到的氣泡排序。假設這裡有乙個陣列,現在要將這個陣列從大到小排...