冒泡排序
秋天来了,准备把数据结构与算法过一遍。
冒泡排序特点:每遍历一次,最大/小的往下沉,最多遍历n次,时间复杂度为
冒泡排序代码
public static void bubbleSort(int[] array, int len){
boolean isSwap; //swap flag
//need n-1 times traverse at most
for (int i = 1; i < len; i++){
isSwap = false;
for (int j = 0; j < len-i; j++){ //swap
if (array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
isSwap = true;
}
}
// System.out.print(String.format("第%d次遍历之后数组为:", i));
// for (int x = 0; x < len; x++){
// System.out.print(array[x] + " ");
// }
// System.out.println();
if (!isSwap) break;
}
}
测试样例代码
public static void main(String[] args){
System.out.println("测试样例1:");
int[] array = {5, 4, 3, 2, 1};
bubbleSort(array, 5);
System.out.println("
测试样例2:");
int[] array2 = {1, 2, 5, 4, 3};
bubbleSort(array2, 5);
}
测试结果
测试样例1:
第1次遍历之后数组为:4 3 2 1 5
第2次遍历之后数组为:3 2 1 4 5
第3次遍历之后数组为:2 1 3 4 5
第4次遍历之后数组为:1 2 3 4 5
测试样例2:
第1次遍历之后数组为:1 2 4 3 5
第2次遍历之后数组为:1 2 3 4 5
第3次遍历之后数组为:1 2 3 4 5
----- end -----