交换排序思想:
在无序区中比较,发现两个元素顺序相反时进行交换,知道全都有序。
交换排序有 冒泡排序、快速排序。
冒泡排序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=
平均时间复杂度:
每趟的比较次数固定,但是比较多少趟是未知的,平均比较趟数,代入上式计算得出。
冒泡排序是稳定排序。