Monday, May 17, 2004
Sorts總整理4--Quick Sort
Quick Sort的演算法和程式碼
《Quick Sort》
Algorithm : Quicksort(A,p,r)
java code:整數排序
if p<r then q←Partition(A,p,r) Quicksort(A,p,q-1) Quicksort(A,q+1,r)Partition(A,p,r)
x←A[r] i←p-1 for j←p to r-1 do if A[j]≦x then i←i+1 exchange A[i]←→A[j] exchange A[i+1]←→A[r] return i+1
void quickSort(int[] Array, int p, int r){ if(p < r){ int q = partition(Array, p, r); quickSort(Array, p, q - 1); quickSort(Array, q + 1, r); } } int partition(int[] Array, int p, int r){ int x = Array[r]; int i = p - 1; for(int j = p; j <= r - 1; j++){ if(Array[j] <= x){ i++; int t1 = Array[i]; Array[i] = Array[j]; Array[j] = t1; } } int t2 = Array[i+1]; Array[i+1] = Array[r]; Array[r] = t2; return i + 1; }java code:字串排序
int partition(String[] Array, int p, int r) { String x = Array[r].name; int i = p - 1; for (int j = p; j <= (r - 1); j++) { if (Array[j].name.compareTo(x) <= 0) { i++; String t1 = Array[i].name; Array[i].name = Array[j].name; Array[j].name = t1; } } String t2 = Array[i + 1].name; Array[i + 1].name = Array[r].name; Array[r].name = t2; return i + 1; } void quickSort(String[] Array) { quickSort(Array,0,Array.length-1); } void quickSort(String[] Array, int p, int r) { if (p < r) { int q = partition(Array, p, r); quickSort(Array, p, q - 1); quickSort(Array, q + 1, r); } }由 shumi 發表於 May 17, 2004 08:28 AM