【算法】java實現快速排序

快速排序(Quicksort)是對冒泡排序的一種改進。 快速排序由C. A. R.
Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

java代碼

public class QuickSortMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[]={1,32,24,55,6,85,22};
		quickSort(a, 0, a.length-1);
	}

	public static void quickSort(int[] a,int start,int end){
		//記錄頭尾位置
		int low = start;
        int high = end;
        //選取頭作爲關鍵值
		int key=a[start];
		while(start<end){
			//從後向前找出小於關鍵值的數進行交換
			while(start<end&&a[end]>=key)
				end--;
			if(a[end]<key){
				int temp=a[start];
				a[start]=a[end];
				a[end]=temp;
			}
			//從前向後找出大於關鍵值的數進行交換
			while (start<end&&a[start]<=key)
				start++;
			if(a[start]>key){
				int temp=a[start];
				a[start]=a[end];
				a[end]=temp;
			}
		}
		 for(int i = 0; i<a.length; i++){
             System.out.print(a[i]+",");
         }
		 System.out.println("\n");
		 //遞歸
         if(start>low) quickSort(a, low, start-1);//左邊序列。第一個索引位置到關鍵值索引-1
         if(end<high) quickSort(a, end+1,high);//右邊序列。從關鍵值索引+1到最後一個	
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章