1. 程式人生 > >java 雞尾酒排序

java 雞尾酒排序

java常用的排序演算法,雞尾酒排序就像鐘擺一樣,第一輪從左往右,第二輪從右往左,第三輪從左往右。。。。直到元素沒有位置交換的時候,說明已經有序,停止交換。是冒泡演算法的升級版

package shujujiegou;

import java.util.Arrays;

/**
 * 雞尾酒排序就像鐘擺一樣,第一輪從左往右第二輪從右往左,第三輪從左往右。。。。
 * 直到元素沒有位置的交換證明已經有序,排序結束
 * @author TomCat
 *
 */
public class CockTailSort {
	public static void sort(int[] array) {
		int temp=0;
		for(int i=0;i<array.length/2;i++) {
			boolean isSorted=true; //有序標記,每一輪的出事為true
			//奇數輪,從左往右比較
			for(int j=i;j<array.length-i-1;j++) {
				if(array[j]>array[j+1]) {
					temp=array[j];
					array[j]=array[j+1];
					array[j+1]=temp;
					isSorted=false;//有元素的交換,所以不是有序的,標記置為false
				}
				
			}
			if(isSorted) {
				break;
			}
			//開始偶數論的比較
			isSorted=true;
			for(int j=array.length-i-1;j>i;j--) {
				if(array[j]<array[j-1]) {
					temp=array[j];
					array[j]=array[j-1];
					array[j-1]=temp;
					isSorted=false;//有元素的交換,所以不是有序的,標記置為false
			}
			}
			if(isSorted) {
				break;
			}
		}
	}
	public static void main(String[] args) {
		int[] array=new int[] {1,4,3,2,5,6,3,5,9};
		sort(array);
		System.out.println(Arrays.toString(array));
	}

}