氣泡排序法及優化
阿新 • • 發佈:2018-11-06
【7】在沒有資料交換的時候,提前退出氣泡排序。
氣泡排序:只操作相鄰的兩個資料。空間複雜度O(1),原地排序演算法。相鄰兩個元素大小相等時不做交換,是穩定的排序演算法。
最好時只進行一次冒泡操作,最好時間複雜度O(n),最壞時需進行n次冒泡操作,為O(n2)。平均時間複雜度是O(n2)。
氣泡排序、插入排序交換(或移動)次數=逆序度=滿有序度-有序度。
package array; public class array1 { public static void main(String[] args) { //氣泡排序法排序 int[] a= {2,5,3,7,6,8,9,10}; int n=a.length; for(int i=0;i<n;i++) { boolean flag=false;//提前退出冒泡迴圈的標誌位 for(int j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { int tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; flag=true;//表示有資料交換 } } if(!flag)break;//沒有資料交換,提前退出 } for(int i=0;i<n;i++) { System.out.print(a[i]+" "); } } }