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

本文关键字:数组 冒泡排序 字符 顺序 C#- | 更新日期: 2023-09-27 17:50:57

我的老师给了我这个:

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

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

我只在处理数字时遇到过冒泡排序,但在使用字符时没有。我们非常感谢任何帮助或启迪。

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

并告诉我应该将字符转换为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隐式强制转换(在第一个和第三个示例中使用(,以及从intcharexplicit强行转换(在最后一个示例中用用(。

(从技术上讲,[2]char应该通过使用排序规则来排序(这是一种对知道e < è < f的字符串的特殊排序(,但这对于学校关于气泡排序的练习来说有点过分(

// 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