满意答案
#include
#include
int partition(char a[][20],int left, int right){
int leftptr,rightptr;
char pivot[20],t[20];
strcpy(pivot,a[right]);
leftptr=left-1;
rightptr=right;
while(1){
while(strcmp(a[++leftptr],pivot)<0);
while(right>0&&strcmp(a[--rightptr],pivot)>0);
if(leftptr>=rightptr) break;
else {
strcpy(t,a[leftptr]);
strcpy(a[leftptr],a[rightptr]);
strcpy(a[rightptr],t);
}
}
strcpy(t,a[leftptr]);
strcpy(a[leftptr],a[right]);
strcpy(a[right],t);
return leftptr;
}
void quicksort(char a[][20],int left, int right){
int i,m;
if(right-left<=0) return;
else {
m=partition(a,left,right);
quicksort(a,left,m-1);
quicksort(a,m+1,right);
}
}
int main(){
int i;
char s[5][20]={"zhao","qian","sun","li","zhou"};
quicksort(s,0,4);
for(i=0;i<5;i++) printf("%s\n",s[i]);
return 0;
}
00分享举报