文章转载于:http://blog.csdn.net/vayne_xiao/article/details/53508973
如果以上C代码看不懂,请看下面java代码:
public static int Partition(int[] a, int p, int r) { int x = a[r - 1]; int i = p - 1; int temp; for (int j = p; j <= r - 1; j++) { if (a[j - 1] <= x) { // 交换(a[j-1],a[i-1]); i++; temp = a[j - 1]; a[j - 1] = a[i - 1]; a[i - 1] = temp; } } // 交换(a[r-1,a[i+1-1]); temp = a[r - 1]; a[r - 1] = a[i + 1 - 1]; a[i + 1 - 1] = temp; return i + 1; } public static void QuickSort(int[] a,int p,int r){ if(p < r) { int q = Partition(a, p, r); QuickSort(a, p, q-1); QuickSort(a, q + 1, r); } } // main方法中将数组传入排序方法中处理,之后打印新的数组 public static void main(String[] stra) { int[] a = { 7, 10, 3, 5, 4, 6, 2, 8, 1, 9 }; QuickSort(a, 1, 10); for (int i = 0; i < a.length; i++) System.out.print(a[i]+" "); }