字符串上的冒泡排序

时间:2015-08-19 19:36:04

标签: c algorithm sorting

 #include<conio.h>
 #include<stdio.h>

 int main(void)
 {
     int i,j,temp;
     char str[]="geeksforgeeks";
     for(i=1;str[i];i++)
     {
         for(j=0;str[j]!='\0';j++)
         {
             if(str[j]>str[j+1])
             {
                 temp=str[j];
                 str[j]=str[j+1];
                 str[j+1]=temp;
             }      
         }
     }
     for(i=0;str[i]!='\0';i++)
     {
         printf("%c",str[i]);
     }
}

我希望在不计算字符串长度的情况下完成它。我知道错误是在for循环的条件语句中然后告诉我它应该是什么?

1 个答案:

答案 0 :(得分:1)

正如Weather Vane已经指出的那样,错误发生在str[j]>str[j+1]。这将使用NULL终止符切换第二个最后一个字符(因此会导致您错过for循环的结束条件)。

要解决此问题,请将for循环结束条件更改为str[j+1]!='\0'并在开头添加一个检查,以确保数组中的第一个字符不是&#39; \ 0&#39;!我还建议研究泡泡搜索,因为这段代码有很多额外的迭代!