package com.usual;
import java.util.Arrays;
/**
* @Author you guess
* @Date 2021/1/4 11:10
* @Version 1.0
* @Desc
*/
public class BubbleSort {
public static void main(String[] args) {
BubbleSort main = new BubbleSort();
//int[] arr = new int[]{1, 5, 9, 7, 3};//1,3,5,7,9,
int[] arr = new int[]{1, 56, 5, 9, 7, 3, 34, 23, 12,};//1,3,5,7,9,12,23,34,56,
main.bubbleSort(arr);
Arrays.stream(arr).forEach(e -> System.out.print(e + ","));
//System.out.println();//[I@e73f9ac
}
public void bubbleSort(int[] arr) {
int temp;
//每趟只对前面的元素排序即可
for (int i = arr.length - 1; i >= 1; i--) {//到1即可;即使i=0,后面j = 0,不小于0,也是退出
boolean flag = false;
for (int j = 0; j < i; j++) {//后面是arr[j] 与 arr[j + 1] 比较,所以j < i即可
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;//发生交换
}
}
if (!flag) break;
}
}//bubbleSort
}
综上所述:
最优的时间复杂度为:O( n^2 )
最差的时间复杂度为:O( n^2 );
平均的时间复杂度为:O( n^2 );
end