如圖1:
氣泡排序:即將這樣一連串的泡泡(各種可比較大小的資料),通過兩兩相比較的辦法,排列出一定的順序。
以從小到大的排序順序為例,需要一下步驟:
1.從上到下依次兩兩相比較,若上面的大於下面的則交換位置,否則位置不變,直到最後兩個元素比較完成,這樣的操作稱為一趟比較,第一趟比較一定是將最大的泡泡排在最後乙個位置。
2.同理,第二趟是將第二大泡泡排在倒數第二位置,所以只需比較到倒數第二個位置,因為最後乙個位置的泡泡已經確定。
3.依次方法,直到第乙個泡泡位置確定
4.n個泡泡,每次確定乙個泡泡的位置,所有一共需要n趟排序。
package cn.com.mp.sort;
public
class bubblesort ;
int array=;
sort(array);
}/* 定義氣泡排序演算法 */
public
static
void sort(int array) }/*
* 判斷是否發生過交換,若沒有,則結束比較,證明所有元素已經是排序好的
* */
if (!flag) }/*
* 遍歷輸出結果
* */
for (int i = 0; i < len; i++) }}
1.時間複雜度:
最好情況,所有的元素都已經排序好,只進行一趟排序,一次for迴圈,所以時間複雜度為o(n)
最壞情況,元素亂序,需要進行n趟排序,兩層for迴圈,所以時間複雜度為o(n^2)
2.穩定性
因為定乙個嚴格的判斷,只有if(array[i]>array[i+1]),即前乙個元素完全大於後乙個元素時才交換位置,相等時並不交換位置,保證了穩定性,所以氣泡排序是穩定性排序
3.建議
建議建立斷點,使用junit跟蹤除錯當陣列已經是排序好的情況,用於驗證flag標識位的優勢。
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...
氣泡排序 氣泡排序法
冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...
排序 氣泡排序
氣泡排序 氣泡排序 bubble sort 是一種 電腦科學 領域的較簡單的 排序演算法 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小...