【问题标题】:Printing a sorted array打印排序数组
【发布时间】:2013-03-01 12:11:50
【问题描述】:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SkihopperOpgave
{
class Program
{
    static void Main(string[] args)
    {
        string deltagerNavn = " ";
        int hopLængde = 0;
        string[] deltager = new string[5];
        int[] hopLængder = new int[5];
        string[] pladsNumre = new string[5] { "1. ", "2. ", "3. ", "4. ", "5. " };

        for (int i = 0; i < deltager.Length; i++)
        {
            Console.Write("Indtast deltagernavn: ");
            deltager[i] = Console.ReadLine();

            Console.Write("Indtast hoplængde for deltager: ");
            hopLængder[i] = Convert.ToInt32(Console.ReadLine());


            for (int j = hopLængder.Length-1; j>0; j--) //Bubblesort
            {
                for (int k = 0; k < j; k++)
                {
                    int b = hopLængder[k];
                    hopLængder[k] = hopLængder[k+1];
                    hopLængder[k+1] = b;
                }
            }
            for (int s = 0; s < deltager.Length; s++)
            {
                Console.WriteLine(pladsNumre[s] + hopLængder[s] + deltager[s]);
            }


        }

    }
}
}

我正在尝试创建一个程序,通过对跳跃距离 (hoplængde) 进行排序,打印出滑雪者的排序列表 (deltagere)。发生的情况是用户首先输入跳台滑雪者的名字,然后输入跳跃距离。然后程序应该以这种格式打印出一个排序列表:1. 80 John (Newline) 2. 45 Mark... 等等。

每次用户输入滑雪跳线时,都应打印列表,所有距离按降序排列。 我已经为跳台滑雪者的名称及其距离创建了一个数组,但是对于如何将int 数组中的第一个元素与字符串数组中的第一个元素以及如何正确排序这个问题我遇到了麻烦在每次迭代中。 我尝试为该作业创建一个冒泡排序,但我得到了错误的结果。

【问题讨论】:

  • 这是作业吗;)?
  • 首先,你的冒泡排序不正确,它总是切换元素的顺序,不管它们如何相互比较。那么如果你需要在两个长度索引上交换位置,那么你还需要在相同的索引上交换名称(所以名称和长度使用相同的位置)。
  • 只是一个简短的提示(剩下的就是你的作业):创建一个带有名称和距离的类“Hopper”。创建一个 List(),在将值输入到临时变量后用 .Add(new Hopper(name, distance)) 填充,然后使用 .Sort() 对列表进行排序。
  • @DaveBish 为什么不管是不是作业,他都需要帮助。
  • @idish 因为该解决方案不会重新实现冒泡排序,而是简单地使用本机排序方法和/或扩展。

标签: c# arrays list sorting loops


【解决方案1】:

看看静态方法 Array.Sort() 的重载——它可以做你想做的事。

您还应该阅读有关 SortedList 类的信息 - 它可能是您的任务的更好选择,并使用已发布(由 Fischerman)的 cmets 来声明实体类。

我认为这对家庭作业来说已经足够了 =)

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多