冒泡排序一系列字符

时间:2017-09-26 02:01:59

标签: c arrays sorting 2d

我试图在不使用任何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;
      }
    }
  }

1 个答案:

答案 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]);
}

通过在冒号排序中使用标志,它会稍微改善其时间复杂度。