【发布时间】: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