public static int quickSort(int[] arr,int i,int j) { //肯定一個基準數,快速排序 int baseNum=arr[i]; //從左向右尋找索引 int left=i; //從右向左尋找索引 int right=j; while (left<right) { //先從右向左掃描 while (arr[right]>=baseNum&&right>left) { right--; } //從左向右 while (arr[left]<=baseNum&&left<right) { left++; } //兩個方向是否相遇 if (left==right) { //將基準數與當前值交換 int temp=arr[left]; arr[left]=baseNum; arr[i]=temp; } //交換數據 int swap=arr[left]; arr[left]=arr[right]; arr[right]=swap; } return right; } public static int[] Sort(int[] arr,int i,int j) { if (i>=j) { return arr; } int middposition=quickSort(arr,i,j); Sort(arr,i,middposition-1); Sort(arr, middposition+1, j); return arr; }
調用:
int[] arr= {6, 1, 2 ,7 ,9 ,3 ,4 ,5, 10 ,8};
int[] sortArr=Sort(arr,0,arr.length-1);ui