所謂氣泡排序,就是將較大的泡(數)不斷往上冒:
1、從第乙個位置開始,比較當前位置與下乙個位置值的大小,如果前乙個位置大於後乙個位置,則交換位置,並繼續向後遍歷;
2、 上一次遍歷完成,即得到最大的元素,並將其交換位置到了最後一位;
3、 接下來從第乙個位置開始,再重新選出[0,n-2]位置的最大數,放到n-2位置上;
4.、依次找到需要遍歷的最大元素及所需要放在end的位置,直至遍歷結束。
時間複雜度為o(n^2)
空間複雜度為o(1)
由於氣泡排序需要比較當前位與後一位的大小,當兩個位置數值相等時,不會發生位置的交換,故氣泡排序具有穩定性。
public
static
int bubblesort(int arr)
for (int end = arr.length - 1; end >= 0; end--) }}
return arr;
}public
static
void
swap(int arr, int i, int j)
排序演算法之(1) 氣泡排序
無論你學習哪種程式語言,在學到迴圈和陣列時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是氣泡排序。氣泡排序 bubble sort 一種交換排序,它的基本思想是 兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。這裡實現最簡單最容易想到的一種 輔助函式 交換兩個變數 v...
排序演算法之(1) 氣泡排序
氣泡排序總共進行n 1趟,每一趟掃瞄總是通過兩兩比較把大的往後放。所以第一趟即把最大數放在最後面,接著第二趟把第二大數放在倒數第二的位置 到n 1趟完畢。此時僅僅有乙個數未排序。這個數就是最小元素。不再須要掃瞄,此時完畢對全部元素的排序。include using namespace std voi...
基礎排序演算法之氣泡排序
1.主體 兩個迴圈 2.時間複雜度 o n 2 3.過程 對於公升序,比較相鄰兩個數,如果第二個數小,則交換位置 從數列後往前比較,最終第乙個數是最小的 重複上述步驟 demo include includeusing namespace std 氣泡排序 void my swap int firs...