#include<stdio.h> int PARTITION(int*A,int p,int r)//分治 { int x=A[r-1]; int i=p-1; int j=p; int temp; while(j<=r-1) { if(A[j-1]<=x) { i++; temp=A[i-1]; A[i-1]=A[j-1]; A[j-1]=temp; } j++; } temp=A[i]; A[i]=A[r-1]; A[r-1]=temp; return i+1; } int RANDOMIZE_PARTITION(int*A,int p,int r)//随机分治 { int temp; int i=random()%(r-p+1)+p; temp=A[i-1]; A[i-1]=A[r-1]; A[r-1]=temp; return PARTITION(A,p,r); } void RANDOMIZE_QUICKSORT(int*A,int p,int r)//随机快排 { int q; if(p<r) { q=RANDOMIZE_PARTITION(A,p,r); RANDOMIZE_QUICKSORT(A,p,q-1); RANDOMIZE_QUICKSORT(A,q+1,r); } } int main() { int test=1000; int array[test]; int i=0; while(i<test) { array[i]=random()%(test*100); i++; } RANDOMIZE_QUICKSORT(array,1,test); i=0; while(i<test) { printf("%d\n",array[i]); i++; } printf("\n"); return 0; }
原文:http://www.cnblogs.com/knowanddo/p/4864387.html