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);
}
我设法冒泡排序小数但是我用字符串吮吸,我有一个文本文件有几个月,我需要按字母顺序排序。我收到错误:
运算符&gt;不能应用于字符串和字符串类型
帮助将不胜感激。
答案 0 :(得分:5)
您可以使用string.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)
答案 1 :(得分:0)
您可以将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:
此方法使用序数排序规则执行区分大小写的比较。有关word,string和ordinal排序的更多信息,请参阅System.Globalization.CompareOptions。要使用序数排序规则执行不区分大小写的比较,请使用设置为StringComparison.OrdinalIgnoreCase的comparisonType参数调用Compare(String,String,StringComparison)方法。