Wie verknüpfe Sie zwei Arrays?

stimmen
1

Ich bin in einer grundlegenden Programmier Klasse, und alles ist in Pseudo-Code.

Meine Frage ist: Wie verknüpfe Sie zwei Arrays?

Ich habe ein eindimensionales Array, den Student Namen auflistet, und ich habe ein zweidimensionales Array, das die ersten acht Noten der einzelnen Schüler auflistet ... das alles in Ordnung ist und gut, aber jetzt brauche ich von den Studenten, die Arrays zu sortieren Name. Ich bin online stocherte und lesen Sie die Bücher Kapitel zweimal, es nur kurz erwähnt zwei Arrays verknüpfen, zeigt aber keine Beispiele.

Wenn es keine Hilfe ist, werden wir Bubble-Sortierung verwendet wird, und das ist, was ich ziemlich vertraut bin mit ... ich die Namen sortieren kann, das ist der einfache Teil, aber ich weiß nicht, wie die Noten zu sortieren, so dass sie nicht tun geht in der falschen Reihenfolge.

Danke für den Input!

Nebenbei bemerkt: Ich habe es herausgefunden! Ich am Ende tun, wie Greg Hewgill erwähnt hatte. Wie ich in meinem Kommentar zu seinem Vorschlag legte, begann ich zufällig in Codezeilen zu werfen, bis diese Idee traf mich ... es sieht nicht hübsch (ein Modul die Namen getauscht, ein anderer die Noten zu tauschen, und ein Drittel sogar dann die einzelnen Schüler Noten früher in einem mehrdimensionalen Array) zu tauschen, aber es in die Tat ... keine Möglichkeit, zu arbeiten, scheint es in einer Sprache zu testen, da ich keinen Compiler noch habe ich genug Wissen, um den Pseudo-Code in eigentlichen Code zu machen, wenn ich war eine herunterladen, aber es klingt wirklich gut auf dem Papier, das ich es getippt auf!

Wie ich auch im Sinne der Anmerkung, ich alle tun für ihre schnelle und hilfreiche Einblicke danken, ich habe eigentlich nicht einmal denke ich, eine Antwort heute Abend bekommen würde, ich danke Ihnen allen nochmals für Ihre Hilfe!

Jeffrey

Veröffentlicht am 02/12/2008 um 09:03
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
0

Ihre Prämisse ist falsch. Sie sollten nicht zwei Array in erster Linie haben.

Sie sollten eine Reihe von haben Objekte , von denen jede einen Namen und seine Partituren Schüler gilt:

public class Record
{
    public string Student;
    public int[] Scores;
} 
Beantwortet am 02/12/2008 um 09:08
quelle vom benutzer

stimmen
1

Was Sie wollen , können tun , ist der folgende: Wie Sie die Namen sind Sortier- und Sie haben zwei Positionen zu tauschen, tun das gleiche Swap in der Anordnung von Partituren. Auf diese Weise werden alle Änderungen , die Sie dem Array Namen machen in der Partituren Array reflektiert werden. Wenn Sie fertig sind, werden die Noten in der gleichen sortierten Reihenfolge, wie die Namen sind.

Es gibt effektivere Wege, dies zu tun mit unterschiedlichen Datenstrukturen, wie andere Kommentare zeigen.

Beantwortet am 02/12/2008 um 09:12
quelle vom benutzer

stimmen
0

Zwei Ansätze: Erstens, wenn die Namen sortiert wird, jedes Mal, wenn zwei Namen tauschen, tauschen die Zeilen (oder Spalten oder was auch immer Sie sie nennen wollen) von Noten in den gleichen Positionen. Am Ende sollen die Werte synchron sein noch mit den Namen.

Zweitens, statt die Namen der Sortierung, schaffen eine dritte Anordnung, die die Indizes in einen der anderen zwei Arrays, anfänglich 0 bis n-1, aber dann sortiert enthält, Namen zu vergleichen [a] und den Namen [b], anstelle des Sortierens die Namen Array selbst.

Beantwortet am 02/12/2008 um 09:18
quelle vom benutzer

stimmen
2

Definieren Sie eine einfache Klasse Student wie folgt aus:

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
}

dann noch einfacher

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

tun die Arbeit für Sie.

Beantwortet am 02/12/2008 um 09:40
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more