快速排序(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到最後一個
}
}