java 排序演算法 氣泡排序
阿新 • • 發佈:2018-12-21
一般的氣泡排序會有重複的比較,所以需要對氣泡排序進行優化,優化後的氣泡排序
package shujujiegou; import java.util.Arrays; /** * 氣泡排序的優化演算法 * @author TomCat * */ public class BubbleSort { public static void sort(int[] array) { int temp=0; int lastExchangeIndex=0;//記錄最後一次的交換位置 int sortBorder=array.length-1;//無序陣列的邊界,每次比較只需到這裡為止 for(int i=0;i<array.length;i++) { boolean isSorted=true;//有序標記,每一輪的初始是true for(int j=0;j<sortBorder;j++) { if(array[j]>array[j+1]) { temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; isSorted=false;//有元素交換的時候所以是無序的,將標記置為false; lastExchangeIndex=j;//把無序陣列的邊界更新為最後一次元素交換的位置 } } sortBorder=lastExchangeIndex; if(isSorted) { break; } } } public static void main(String[] args) { int[] array=new int[] {1,2,4,3,5,5,7,9,6}; sort(array); System.out.println(Arrays.toString(array)); } }