你如何链接两个数组?

时间:2008-12-02 08:03:12

标签: arrays linker pseudocode multidimensional-array

我在一个基本的编程类中,一切都是用伪代码完成的。

我的问题是:你如何链接两个数组?

我有一个列出学生姓名的单维数组,我有一个二维数组,列出了每个学生的前八个分数...这一切都很好,但现在我需要对数组进行排序由学生姓名。我在网上讨论并阅读了两本书,只是简单地提到了连接两个数组,但没有显示例子。

如果有任何帮助,我们正在使用泡泡分类,这就是我非常熟悉的......我可以对名称进行排序,这很容易,但我不知道如何对等级进行排序所以他们不会出故障。

感谢您的投入!

旁注:我明白了!我最终做了Greg Hewgill提到的事情。当我对他的建议发表评论时,我开始随机抛出一行代码,直到这个想法打到我......它看起来并不漂亮(一个模块交换名称,另一个交换等级,第三个甚至然后在多维数组中交换各个学生的成绩),但它确实似乎有效...没有办法用语言测试它,因为我没有编译器,也没有足够的知识将伪代码转换为实际代码我要下载一个,但在我打字的纸上听起来真的很棒!

正如我在说明中所提到的,我感谢大家的快速和有益的见解,我实际上甚至不认为我今晚会得到答复,再次感谢大家的帮助!

杰弗里

4 个答案:

答案 0 :(得分:2)

定义一个简单的Student类,如下所示:

public class Student : IComparable<Student>
{
    public string Name { get; set; }
    public int[] Scores { get; set; }

    #region IComparable<Student> Members

    public int CompareTo(Student other)
    {
        // Assume Name cannot be null
        return this.Name.CompareTo(other.Name);
    }

    #endregion
}

然后更简单

    var students = new[] {
        new Student(){ Name = "B", Scores = new [] { 1,2,3 } },
        new Student(){ Name = "C", Scores = new [] { 3,4,5 } },
        new Student(){ Name = "A", Scores = new [] { 5,6,7 } }
    };

    Array.Sort(students);

将为您完成工作。

答案 1 :(得分:1)

您可能想要做的是以下内容:当您对名称进行排序并且必须交换两个位置时,请在分数数组中进行相同的交换。这样,您对names数组所做的所有更改都将反映在score数组中。完成后,分数将与名称的排序顺序相同。

使用不同的数据结构有更有效的方法,其他评论将显示。

答案 2 :(得分:0)

你的前提是错的。你不应该首先拥有两个数组。

你应该有一个对象数组,每个对象都有一个学生的名字和他的分数:

public class Record
{
    public string Student;
    public int[] Scores;
} 

答案 3 :(得分:0)

两种方法:首先,在对名称进行排序时,每次交换两个名称时,在相同位置交换分数的行(或列或任何您想要称之为的内容)。最后,分数仍应与名称保持同步。

其次,不是对名称进行排序,而是创建第三个数组,该数组将包含其他两个数组中的任何一个的索引,最初为0到n-1,但随后进行排序,比较名称[a]和名称[b],而不是对名称数组本身进行排序。