如何对字符串数组进行气泡排序
本文关键字:气泡 排序 数组 字符串 | 更新日期: 2024-11-07 05:17:31
public void BubbleSortArrayString(string[] letters) //change here
{
bool swap;
string temp; //change this too
do
{
swap = false;
for (int index = 0; index < (letters.Length - 1); index++)
{
if (letters[index] > letters[index + 1]) //if first number is greater then second then swap
{
//swap
temp = letters[index];
letters[index] = letters[index + 1];
letters[index + 1] = temp;
swap = true;
}
}
} while (swap == true);
}
我已经设法对小数点进行气泡排序,但我对字符串很糟糕,我有一个包含月份的文本文件,我需要按字母顺序对其进行排序。我收到错误:
运算符>不能应用于字符串和字符串类型
帮助将不胜感激。
您可以使用字符串。Compare(x,y) 而不是 <
,如果字符串相等,则返回 0,否则返回一个整数,指示它们在排序顺序中的相对位置
for (int index = 0; index < (letters.Length - 1); index++)
{
if (string.Compare (letters[index], letters[index + 1]) < 0) //if first number is greater then second then swap
{
//swap
temp = letters[index];
letters[index] = letters[index + 1];
letters[index + 1] = temp;
swap = true;
}
}
如果要在比较过程中忽略大小写,则应使用string.Compare (letters[index], letters[index + 1], true)
你可以使用 String.CompareOrdinal
作为字符串。此外,最好反转if
语句以减少嵌套。喜欢这个:
if (String.CompareOrdinal(letters[index], letters[index + 1]) >= 0) continue;
temp = letters[index];
letters[index] = letters[index + 1];
letters[index + 1] = temp;
swap = true;
从 MSDN:
此方法使用序号排序规则执行区分大小写的比较。有关单词、字符串和序号排序的详细信息,请参阅系统.全球化.比较选项。若要使用序号排序规则执行不区分大小写的比较,请在 comparisonType 参数设置为 StringComparison.OrdinalIgnoreCase 的情况下调用 Compare(String、String、StringComparison) 方法。