【问题标题】:How do you link two arrays?你如何链接两个数组?
【发布时间】:2010-09-24 21:36:47
【问题描述】:

我在上基础编程课,一切都是用伪代码完成的。

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

我有一个列出学生姓名的单维数组,还有一个列出每个学生的前八名分数的二维数组……这一切都很好,但现在我需要对数组进行排序以学生的名义。我在网上闲逛并通读了书籍章节两次,它只简要提到了链接两个数组,但没有显示示例。

如果有任何帮助,我们正在使用冒泡排序,这是我相当熟悉的...我可以对名称进行排序,这很容易,但我不知道如何对成绩进行排序,所以它们不会出现故障。

感谢您的意见!

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

正如我在笔记中提到的,我非常感谢大家的快速和有益的见解,我什至没想到今晚我会得到回复,再次感谢大家的帮助!

杰弗里

【问题讨论】:

  • 杰夫:欢迎来到 stackoverflow!请为有帮助的答案投票,并接受(带有复选标记)其中一个答案。 :)
  • 您实际上不需要编译器。选择具有 Python、Ruby、SML 等解释器的语言...
  • 伪代码?没有编译器? Dijkstra 会喜出望外...

标签: arrays linker pseudocode multidimensional-array


【解决方案1】:

像这样定义一个简单的学生类:

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);

将为您完成工作。

【讨论】:

    【解决方案2】:

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

    对于不同的数据结构,有更有效的方法可以做到这一点,正如其他 cmets 所展示的那样。

    【讨论】:

    • 我开始像往常一样做,也就是随机写几行代码,直到找到可行的方法,实际上我最终这样做了,谢谢大家的即时建议和意见!我知道从现在起我会去哪里寻求帮助。 ^-^
    • 未注册,所以不能投票,如果我幸运的话,如果我现在上床睡觉,我可以睡 6 个小时,然后我必须上这堂课……睡觉……注册...我明天注册^-^;
    【解决方案3】:

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

    您应该有一个对象数组,每个对象都包含一个学生的姓名和他的分数:

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

    【讨论】:

    • 告诉老师(如果可以的话),而不是倒霉的学生。
    • 如我所说,这是一门很基础的课,我从高中(现在快六年前)就没有学过编程语言了,当时是c++,老师好像在教最基础的东西,这很棒......但我总是很难让两件事一起工作,多任务处理很糟糕
    • 你不知道编程类是否已经在Class级别。此外,您不了解该语言,也许没有类,比如函数式语言。
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 2015-07-25
      • 2021-03-06
      相关资源
      最近更新 更多