如何对字符串数组进行冒泡排序?

时间:2016-04-21 08:46:14

标签: c# string sorting

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;不能应用于字符串和字符串类型

帮助将不胜感激。

2 个答案:

答案 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)方法。

相关问题