C#-按字母顺序对字符数组进行冒泡排序
本文关键字:数组 冒泡排序 字符 顺序 C#- | 更新日期: 2023-09-27 17:50:57
我的老师给了我这个:
int[] letters = { 'c', 's', 'a', 'k', 'x', 'l', 'j' };
并告诉我应该将chars转换为int,然后按字母顺序对其进行冒泡排序,然后返回到char,并按字母顺序保存和打印数组。
我只在处理数字时遇到过冒泡排序,但在使用字符时没有。我们非常感谢任何帮助或启迪。
并告诉我应该将字符转换为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;
(从技术上讲,正确的定义是存在从char
到int
的隐式强制转换(在第一个和第三个示例中使用(,以及从int
到char
的explicit强行转换(在最后一个示例中用用(。
(从技术上讲,[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