Quick Sort
/** File: main.c * Author: lonecat * * Created on 2011年4月3日, 下午4:41 */#include <stdio.h>void swap(int* v1, int* v2){ int tmp = *v1; *v1 = *v2; *v2 = tmp;}int partition(int* num, int p, int r ){ // printf("in partition\n"); printf("p=%d, r=%d\n", p, r); int key = num; int j = p; int i = j-1; while(j < r){ if(num <= key){ i++; swap(num+j, num+i); print(num,r+1); } j++; } swap(num+i+1, num+r); print(num,r+1); printf("%d\n ", i+1); return i+1;}void qsort(int* num, int p, int r){ if((r-p) > 0){ int q = partition(num,p,r); qsort(num,p,q-1); qsort(num, q+1,r); }}/* **/int main(int argc, char** argv) { int num[] = {5,2,4,6,1,3,7,9,4,8}; print(num,10); qsort(num, 0, 9); print(num,10); return (0);}
页:
[1]