C# - 按字母顺序对字符数组进行冒泡排序

时间:2015-05-28 11:25:58

标签: c# arrays bubble-sort

我的老师给了我这个:

int[] letters = { 'c', 's', 'a', 'k', 'x', 'l', 'j' };

并且告诉我应该将chars转换为int然后按字母顺序对它们进行冒泡并将其返回char并按字母顺序保存并打印数组。

我只会在处理数字时遇到气泡排序,但在使用字符时则不会。非常感谢任何帮助或启发。

2 个答案:

答案 0 :(得分:3)

  

并告诉我应该将字符转换为int

可能你并不理解他告诉你的事情。在电脑"字符"已经是数字了。没有特殊的内存单元格具有 A 字符的形状。

你可以:

char ch = 'A';
int num = ch;

或者你可以:

char ch1 = 'A';
char ch2 = 'B';

if (ch1 < ch2)
{
}
例如

(但是你不想做你想做的事情):

char ch1 = 'A';
char ch2 = (char)(ch1 + 1); // 'B'

(注意最终的演员:当你在char上进行数学运算时,会隐式转换为int

等等。

请注意,相反的情况并非如此:

char ch = 'A';
int num = ch;
char ch2 = num; // COMPILATION ERROR

你需要演员:

char ch2 = (char)num;

(从技术上讲,正确的定义是存在从charint隐式强制转换(在第一个和第三个示例中使用)并且有一个intchar的显式强制转换(在上一个示例中使用)。

(技术上[2] char应该通过使用排序规则进行排序(这是对知道e < è < f的字符串的特殊排序)但这对学校来说有点过分了关于泡沫分类的练习)

答案 1 :(得分:0)

// init array
char[] letters = { 'c', 's', 'a', 'k', 'x', 'l', 'j' };

// bubble sorting...
int count = letters.Length;
bool swapped;
do
{
    swapped = false;
    for (int i = 0; i < count - 1; i++)
    {
        if (letters[i] > letters[i + 1])
        {
            char c = letters[i];
            letters[i] = letters[i + 1];
            letters[i + 1] = c;
            swapped = true;
        }
    }
    count--;
} while (swapped);

string result = string.Join(", ", letters);

<强>结果

a, c, j, k, l, s, x