要點: 冒泡的核心是交換和遍歷,若是一個遍歷中沒有交換,則改隊列已是有序的。java
根據上面這個點,咱們能夠添加一個標識變量,記錄交換狀況,優化冒泡排序。上代碼優化
public static void main(String[] args) { int[] a = {1, 5, 88, 4, 5, 0, 84, 69, 12, 5, 10, 254}; System.out.println(Arrays.toString(a)); optimizBubbleSort(a); System.out.println(Arrays.toString(a)); } public static void optimizBubbleSort(int[] a){ if(a!=null&&a.length>0){ int len = a.length; for(int i = 0;i<len;i++){ boolean trans = false; //交換標識變量 for(int j=0;j<len-1-i;j++){ if(a[j]<a[j+1]){ int t = a[j+1]; a[j+1] = a[j]; a[j] = t; trans = true; } } if(!trans){ break; } } } }