如何进行泡泡运动C#

如何进行泡泡运动C#,c#,C#,标题可能不是描述性的,但请留下来。 这就是buble排序的外观: string s = Console.ReadLine(); StringBuilder sb = new StringBuilder(s); for (int i = 0; i < sb.Length; i++) { for (int j = 0; j < sb.Length - 1; j++) { if

标题可能不是描述性的,但请留下来。 这就是buble排序的外观:

string s = Console.ReadLine();
StringBuilder sb = new StringBuilder(s);
        for (int i = 0; i < sb.Length; i++)
        {
            for (int j = 0; j < sb.Length - 1; j++)
            {
                if (sb[j] > sb[j + 1])
                {
                    char tmp = sb[j];
                    sb[j] = sb[j + 1];
                    sb[j + 1] = tmp;
                }
            }
        }
        s = sb.ToString();
        Console.WriteLine(s);
string s=Console.ReadLine();
StringBuilder sb=新的StringBuilder;
for(int i=0;isb[j+1])
{
char tmp=sb[j];
sb[j]=sb[j+1];
sb[j+1]=tmp;
}
}
}
s=sb.ToString();
控制台。写入线(s);
但是我无意中这样写了它,我不知道为什么它能工作,我至少应该得到一个IndexOutfrange异常吗?->

string s = Console.ReadLine();
            StringBuilder str = new StringBuilder(s);

            for (int i = 0; i < s.Length; i++)
            {
                for (int j = 0; j < str.Length; j++)
                {
                    if (str[i] < str[j])
                    {
                        var tmp = str[j];
                        str[j] = str[i];
                        str[i] = tmp;
                    } 
                }
            }

            s = str.ToString();
            Console.WriteLine(s);
string s=Console.ReadLine();
StringBuilder str=新的StringBuilder;
对于(int i=0;i

为了澄清这一点,请按字母顺序排列单词。

在第一种方法中,您使用了
j
0
Length-1
,并在比较字符时不断添加
1

在第二种方法中,您使用了
j
0
Length
,但在比较字符时没有添加
1


看到这两种方法都是一样的,你也不会例外。

在第二个版本中,你的索引总是在范围内。您仅使用
i
j
,并且两者都始终小于
Length
,这对于
StringBuilder
中的字符串及其副本都是相同的。为什么会出现异常?寻求调试帮助的
问题(“为什么此代码不工作?”)
的大部分或所有参数都适用于此“为什么此代码工作”问题。所以,我投票决定结束。顺便说一下,这可能是我在这里遇到的第一个“为什么这个代码有效”的问题:)