交換排序思想:
在無序區中比較,發現兩個元素順序相反時進行交換,知道全都有序。
交換排序有 冒泡排序、快速排序。
冒泡排序java實現:
/**
* 冒泡排序
* @param array 待排序數據
*/
static void bubbleSort(int[] array) {
int i, j, exchange;
int tmp;
int n = array.length;
for(i = 0; i < n - 1; i++) {//進行n-1趟冒泡
exchange = 0;
for(j = n - 1; j > i; j--) {//從後向前冒出最小元素
if(array[j] < array[j-1]) {
tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
exchange = 1;
}
}
if(exchange == 0)
return;
}
}
空間複雜度:O(1)
時間複雜度:
正序,最小時間複雜度:比較次數:n-1, 最小移動次數:0
反序,最大時間複雜度:比較次數:=n(n-1)/2=
移動次數:=3n(n-1)/2=
平均時間複雜度:
每趟的比較次數固定,但是比較多少趟是未知的,平均比較趟數,代入上式計算得出。
冒泡排序是穩定排序。