基于没有Array.Sort的int数组对字符串数组进行排序

时间:2013-11-29 23:32:26

标签: c# arrays bubble-sort

我需要根据int数组对字符串数组进行排序。

我有这个来排序我的int数组

    for (int pass = 0; pass < score.Length - ONE; pass++)
    {
        for (int index = 0; index < score.Length - ONE; index++)
        {
            if (score[index] > score[index + ONE])
            {
                int temp = score[index];
                score[index] = score[index + ONE];
                score[index + 1] = temp;
            }
        }
    }

这个int和name数组是通过

获得的
Console.Write("Enter in a name and score: ", i);
userInput = Console.ReadLine();
if (userInput != "")
{
    parsedInput = userInput.Split();
    name[i] = parsedInput[ZERO];
    score[i] = int.Parse(parsedInput[ONE]);
}

对于我的作业,我需要显示最高分组织的名称和分数。

我知道我可以使用Array.Sort(得分,名称)来实现这一点,但是这项任务要求我不要在.net库中使用任何内置的排序算法,假设Array.Sort是。< / p>

非常感谢任何提示或帮助。

2 个答案:

答案 0 :(得分:1)

在排序name时,您需要重新排列score,以便它们保持一致。

for (int pass = 0; pass < score.Length - ONE; pass++)
{
    for (int index = 0; index < score.Length - ONE; index++)
    {
        if (score[index] > score[index + ONE])
        {
            int temp = score[index];
            score[index] = score[index + ONE];
            score[index + 1] = temp;

            string temp2 = name[index];
            name[index] = name[index + ONE];
            name[index + 1] = temp2;
        }
    }
}

答案 1 :(得分:0)

当交换int数组中的项时,还要交换字符串数组中的相应项。这样,值就会相互关联,名称和分数保持同步。

请注意,排序算法是冒泡排序的低效版本。如果内循环运行中没有交换,则数组已排序,您可以退出外循环。