【正确答案】
int partition(RecType r[],int low,int high){
int i=low, j=high, aug=0;
for(; i<=high; i++) avg+ =R[i].key;
i=low;
avg=avg/(high-low+1);
temp=R[low];
while(i<j){
while(i<j && R[j].key>=avg) j- -;
if(i<j) R[i]=R[j];
while(i<j && R[i].key<=avg) i++;
if(i<j) R[j]=R[i];
}
R[i]=temp;
if(R[i].key<=avg) return i;
else return i-1;
}
void quicksort(RecType R[], int S, int T); {
if(S<T){
k=partition(R, S, T);
quicksort(R, S, k);
quicksort(R, k+1, T);
}
}
【答案解析】[解析] 保存划分的第一个元素。以平均值作为枢轴,进行普通的快速排序,最后枢轴的位置存入已保存的第一个元素,若此关键字小于平均值,则它属于左半部,否则属于右半部。