冒泡排序:两两比较相邻的元素,如果反序则交换,直到没有反序记录为止
最优时间复杂度 , 最坏时间复杂
代码
/*** @Description: 冒泡排序:两两比较相邻的元素,如果反序则交换,直到没有反序记录为止* 最优时间复杂度 O(n), 最坏时间复杂度 O(n2)* @Author: lizhouwei* @CreateDate: 2018/6/23 8:34*/public class BubbleSort {public static void bubbleSort(Integer[] arr) {if (arr == null || arr.length == 0) {return;}SortUtil.printArray("冒泡排序前", arr);boolean flag = true;for (int i = 1; i < arr.length && flag; i++) {flag = false;for (int j = arr.length - 1; j >= i; j--) {if (arr[j] < arr[j - 1]) {SortUtil.swap(arr, j, j - 1);flag = true;}}}SortUtil.printArray("冒泡排序后", arr);}}
冒泡复杂度分析
时间复杂度:
当最好的情况,也就是要排序的表本身就是有序的,那么只需要n-1次比较,没有数据交换,时间复杂度为,
当最坏的情况,即要排序的表是你须得情况,此时需要比较 次,因此时间复杂度为
;
