如何根据另一个数组的值对二维数组进行排序



所以我必须从文本文件中读取一些文本


S3333;50 50 50 50
S2222;20 50 40 70
90 80 90 85
S4444;70 80 90 50

我应该把文本变成2个数组。一个数组存储学生的ID,另一个数组存储学生的分数(2d数组)。

现在我需要按字母顺序排列学生证。我如何排序二维数组基于我如何排序一维数组?

全面披露:我是C程序员,不是c#程序员,所以这可能不是标准的c#方法。不管怎样,它会工作,它是可读的,它是有意义的。这是我在c++或java中会做的事情,所以我打赌它会延续到c#。

我将从我的老派C背景中拿出一页,并说我认为结构的概念在这里可能会有所帮助。

如果你在c#编程,你可能知道什么是类,对吧?结构体就是一个将其所有内部变量都公开的类。如果我必须从文件中读取具有id#和薪水的员工列表,然后按id号对它们进行排序,那么我将拥有这样的结构体:

public struct employee
{
    int idnum;
    int yearly_salary;
    String name;
}

每次声明一个新的雇员变量时,它都带有3个"字段"(idnum, yearly_salary, name)。看看这个例子。它创建了两个名为emp1和emp2的新员工结构。

employee emp1;
emp1.name = "Lisa Goodwin";
emp1.yearly_salary = 129200;
emp1.idnum = 3911;
employee emp2;
emp2.name = "Sevn Rushbjorn";
emp2.yearly_salary = 39800;
emp2.idnum = 8721;

如果我们想打印id#最低的员工的工资,我们可以这样做:

if(emp1.idnum < emp2.idnum)
{
    Console.WriteLine("salary = ${0}n", emp1.yearly_salary);
}
else
{
    Console.WriteLine("salary = ${0}n", emp2.yearly_salary);
}

最重要的是,当你交换数组中的两个雇员时,当然,它们对应的所有值都会被交换。

employee emps[4];
//...... initialize vars from file or whatever...
swap<employee>(emps[3], emps[2]);

使用这些概念,您可以比较排序方法中的id#(我假设您是自己编写的,因为这听起来像作业),并使用c#的标准swap函数来交换两个雇员(或者,在您的情况下,是学生)。

简单地把我的"雇员"的例子适用于学生,这应该工作良好。

相关内容

  • 没有找到相关文章

最新更新