到目前为止这是我的代码
void bubbleSort(char a[][100], int sz){
char temp[100];
int i,j;
for(i=0; i<sz; i++){
for(j=i+1; j <sz-1; j++){
if(strcmp( a[i], a[j] ) >0){
strcpy(temp, a[j]);
strcpy(a[j], a[j-1]);
strcpy(a[j-1], temp);
}
}
}
}
main(){
char x[10][100] = {"to","be","or","not","to","be","that","is","the","question"};
bubbleSort(x,10);
for(int i=0;i<10;i++)
printf("%s\n",x[i]);
system("pause");
}
它似乎不起作用。这就是我得到的:
be
or
not
be
is
to
that
the
to
question
好像,发生了什么?我的代码有问题吗?
答案 0 :(得分:1)
您正在与i
和j
进行比较。然后在j
和j-1
之间交换..
if(strcmp( a[i], a[j] ) >0){
strcpy(temp, a[j]);
strcpy(a[j], a[j-1]);
strcpy(a[j-1], temp);
}
在i
和j
之间交换
for(i=0; i<sz; i++){
for(j=i+1; j <sz-1; j++){
if(strcmp( a[i], a[j] ) >0){
strcpy(temp, a[j]);
strcpy(a[j], a[i]);
strcpy(a[i], temp);
}
}
}