1. 程式人生 > >Java快速排序演算法

Java快速排序演算法

基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列

package sort;

import com.Quick;

public class QuickSort {

	public static void sort(int[] arr,int low,int high){
		int i = low;
		int h = high;
		
		//預設第一個為比較物件
		int index  = arr[low];
		while(i<h){
			//從後往前找比index更小的數
			while(i<h&&arr[h]>=index)
				h--;
			if(i<h){
				int temp = arr[h];
				arr[h] = arr[i];
				arr[i] = temp;
				i++;
			}
			//從前面開始找比index更大的數
			while(i<h&& arr[i]<=index)
				i++;
			if(i<h){
				int temp = arr[i];
				arr[i] = arr[h];
				arr[h] = temp;
				h--;
			}
		}
		
		if(i>low) sort(arr,low,i-1);
		if(h<high) sort(arr,i+1,high);
	}
	
	public static void main(String[] args) {
		int arr[] ={12,34,55,66,4,32,23,3};
		Quick.sort(arr, 0, arr.length-1);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+"  ");
		}
	}
}