public class BubbleSort {
public static void main(String[] args) {
int[] arr = {49, 38, 65, 97, 76, 13, 27, 49};
int[] result = bubbleSortAsc(arr);
System.out.println(Arrays.toString(result));
}
/**
* 从小到大排序
* @param arr
* @return
* 最好情况(有序) 时间复杂度o(n)
* 最坏情况(有序) 时间复杂度o(n^2)
* 平均时间复杂度 o(n^2)
* 空间复杂度o(1)
*/
public static int[] bubbleSortAsc(int[] arr){
for (int i = 0; i < arr.length; i++) {
//i表示当前要确定的位置,比如i=0,表示当前要确定index=0的位置应该是哪个元素
boolean flag = true;
for (int j = arr.length-1; j > i ; j--) {
//上面这里是j>i,而非j>=i,可以从i=0这个情况来看,
// 如果允许j=i,则当j=0时,arr[j-1]会越界
if (arr[j-1] > arr[j]){
int tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
flag = false; //只要发生过一次交换,flag置为false
}
}
//如果一次冒泡过程中没有发生过任何一次交换,说明已经有序了,后面的都不用做了
if (flag){
return arr;
}
}
return arr;
}
}
复习:冒泡排序
最新推荐文章于 2024-08-26 23:00:00 发布