void qsort(int lo, int hi) { if(lo < hi) { int p; p = getpivot(lo, hi); qsort(lo, p - 1); qsort(p, hi); } };
void kspx(etype a[],int left,int right) { if(left<right){ int pivot,i,j; pivot=getpivot(a,left,right); i=left; j=right; while(1){ while(a[i].key<a[pivot].key) i++; while(a[j].key>a[pivot].key) j--; if(i<j) swap(&(a[i].key),&(a[j].key)); else break; } swap(&(a[i].key),&(a[right].key)); kspx(a,left,i-1); kspx(a,i+1,right); } }