冒泡排序
过程:比较相邻的两个元素,较小的数冒起来,较大的数下沉 (以升序为例)
复杂:n*n
代码实现:
public static int[] BubbleSort(int[] arr){
int temp;// 做临时变量用
int len = arr.length;
for(int i = 0; i < len - 1; i++){
for(int j = len - 1; j > i; j--){
if(arr[j] < arr[j - 1]){
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
return arr;
}
今天在一片文章中看到了冒泡排序的优化(以前从来没想过),一下是代码:
public static int[] BubbleSort(int[] arr){
int temp;// 做临时变量用
int len = arr.length;
for(int i = 0; i < len - 1; i++){
boolean flag;
for(int j = len - 1; j > i; j--){
if(arr[j] < arr[j - 1]){
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
flag = true;
}
}
if(!flag)
return arr;
}
return null;
}
优化主要是省去了排好序之后的无意义操作