我试图在不使用任何C库函数的情况下对char 2d数组进行冒泡排序,这是我的代码,但是当我编译并运行时,没有任何内容被排序。
声明字符串:char Strings [25] [1000];并充满了扫描仪输入的输入。
char temp;
for(int i =1; i < NUM; i++){
for(int j = 0; j < NUM; j++){
if (Strings[i-1] > Strings[i]){
temp = *Strings[i];
*Strings[i] = *Strings[j];
*Strings[j] = temp;
}
}
}
答案 0 :(得分:1)
由于您无法像C
中那样比较字符串。因此,您可以尝试strcmp
功能。
首先,包含字符串头文件。即,#include <string.h>
char tmp[1000];
int i,j,flag;
for(i = 0, flag=1; i < NUM && flag==1; i++){
for (j = 0, flag=0; j < NUM-i-1; j++){
if (strcmp(Strings[j],Strings[j+1]) > 0){
strcpy(tmp,Strings[j]);
strcpy(Strings[j],Strings[j+1]);
strcpy(Strings[j+1],tmp);
flag=1;
}
}
}
for(i=0;i<NUM;i++){
printf("%s\n",Strings[i]);
}
通过在冒号排序中使用标志,它会稍微改善其时间复杂度。