예제 #1
0
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);
	}	

}