2008-12-02 67 views
1

我在一個基本的編程類,一切都在僞代碼完成。你如何鏈接兩個數組?

我的問題是這樣的:你如何鏈接兩個數組?

我有一個列出學生姓名的單維數組,我有一個二維數組,列出了每個學生的前八個分數...這是一切都很好,但現在我需要排序數組由學生姓名。我在網上翻閱了一遍,並通讀了書籍章節兩次,它只簡單地提到了鏈接兩個數組,但沒有顯示任何示例。

如果有任何幫助,我們正在使用氣泡排序,這就是我所熟悉的......我可以對名稱進行排序,這很容易,但我不知道如何排序等級所以他們不會出現故障。

感謝您的意見!

旁註:我明白了!我最終做了Greg Hewgill如何提及。當我對他的建議發表評論時,我開始隨機投入代碼行,直到這個想法碰到我爲止......它看起來並不漂亮(一個模塊交換了名字,另一個交換了成績,還有一個交換了成績,以更早的多維數組交換個別學生成績),但它確實似乎工作......沒有辦法用語言來測試它,因爲我沒有編譯器,也沒有足夠的知識將僞代碼變成實際的代碼if我要下載一個,但是在我輸入的論文中這聽起來非常好!

正如我在報告中提到的那樣,我非常感謝大家的迅速和有益的見解,實際上我甚至不認爲我今晚會得到答覆,再次感謝大家的幫助!

Jeffrey

+0

傑夫:歡迎計算器!請提供有用的答案,並接受(帶有複選標記)其中一個答案。 :) – 2008-12-02 08:50:03

+0

你其實不需要編譯器。去找一個有像Python,Ruby,SML這樣的解釋器的語言...... – boutta 2008-12-02 09:12:39

+0

Pseudocode?沒有編譯器? Dijkstra會很高興... – Artelius 2009-11-06 22:38:30

回答

1

你可能想要做的是:當你正在排序的名稱和你必須交換兩個職位,做相同的交換分數數組。這樣,您對名稱數組所做的所有更改都會反映在scores數組中。完成後,分數將與姓名的排序順序相同。

有更多有效的方式來處理不同的數據結構,就像其他評論會顯示的那樣。

0

你的前提是錯誤的。首先你不應該有兩個數組。

你應該有對象,其中的每一個持有學生的名字和他的分數的一個數組:

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

兩種方法:首先,在排序名稱時,每次交換兩個名稱時,將相同位置的分數交換行(或列或任何你想稱之爲)。最後,分數應該與名字保持一致。其次,不是排序名稱,而是創建第三個數組,該數組將包含索引到其他兩個數組中,最初從0到n-1,然後進行排序,比較名稱[a]和名稱[b] ,而不是排序名稱數組本身。

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

將做的工作適合你。