1. 程式人生 > >java 排序演算法 氣泡排序

java 排序演算法 氣泡排序

一般的氣泡排序會有重複的比較,所以需要對氣泡排序進行優化,優化後的氣泡排序

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));
	}
}