/*快速排序之初探*/ #include <stdio.h> #include <conio.h> int main(void) { void quick_sort(int [],int); int i; static int a[10]={1,5,3,6,4,7,2,9,8,10};
quick_sort(a,10); printf("After quick_sort:\n"); for(i = 0;i < 10;i++) { printf("a[%d]=%d\n",i,a[i]); } getch(); return 0; }
void quick_sort(int v[],int n) { void qs(int [],int,int);
qs(v,0,n-1); }
void qs(int v[],int left,int right) { int i; int j; int x; int temp;
i = left; j = right; x = v[(left+right)/2];
while(i < j) { while((v[i] < x) && (i < right)) { i++; } while((v[j] > x) &&(j > left)) { j--; } if(i <= j) { temp = v[i]; v[i] = v[j]; v[j] = temp; i++; j--; } } if(i < right) { qs(v,i,right); } if(j > left) { qs((v+left),left,j); } }
/**************************************************************
假如给定十个数,1,2,3,4,5,6,7,8,9,10。
求使得快速排序取得最坏时间复杂度的排列。
****************************************************************/