[英]Bubble sort on string
#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]);
}
}
我希望不計算string的長度就完成操作。因為我知道該錯誤位於for循環的條件語句中,然后告訴我應該是什么?
正如Weather Vane已經指出的那樣,錯誤發生在str[j]>str[j+1]
。 這將使用NULL終止符切換倒數第二個字符(從而使您錯過for循環的結束條件)。
要解決此問題,請將for循環結束條件更改為str[j+1]!='\\0'
並在開頭添加一個檢查以確保數組中的第一個字符不是'\\ 0'! 我還建議研究Bubble搜索,因為此代碼有很多額外的迭代!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.