Hoe u een koppeling twee arrays?

stemmen
1

Ik ben in een basisprogrammering klasse, en alles gebeurt in pseudo-code.

Mijn vraag is: Hoe u een koppeling twee arrays?

Ik heb een single-dimensionale array die studenten namen lijsten, en ik heb een twee-dimensionale array die de top acht scores van elke leerling geeft ... dit is allemaal leuk en aardig, maar nu moet ik de arrays door de studenten te sorteren naam. Ik stak rond online en lees het hoofdstuk boeken twee keer, maar slechts kort noemt het koppelen van twee arrays, maar geeft geen voorbeelden.

Als het enige hulp, maken we gebruik van bubble-sorteren, en dat is wat ik ben redelijk bekend met ... Ik kan de namen sorteren, dat is het makkelijke gedeelte, maar ik weet niet hoe de cijfers te sorteren, zodat ze niet doen ga niet in orde.

Bedankt voor de input!

Kleine opmerking: Ik heb het bedacht! Uiteindelijk heb ik het doen hoe Greg Hewgill had genoemd. Zoals ik in mijn reactie op zijn suggestie, ik begon willekeurig gooien in regels code tot dat idee me raakte ... het ziet er niet mooi (één module verwisseld de namen, andere om de rangen te wisselen, en een derde zelfs dan aan de individuele studenten rangen ruilen eerder in een multidimensionale array), maar het inderdaad leek te werken ... geen manier om het te testen in een taal als ik heb geen compiler, noch heb ik genoeg kennis om de pseudo-code in daadwerkelijke code als te maken ik was één downloaden, maar het klinkt echt goed op het papier typte ik het op!

Zoals ik ook in de nota vermeld, bedank ik iedereen voor de snelle en behulpzaam inzicht, ik eigenlijk niet eens dat ik zou een antwoord vanavond, dank je iedereen weer voor al uw hulp!

Jeffrey

De vraag is gesteld op 02/12/2008 om 09:03
bron van user
In andere talen...                            


4 antwoorden

stemmen
0

Uw uitgangspunt is verkeerd. Je moet niet twee array in de eerste plaats.

Je moet een reeks van zijn objecten , die elk heeft de naam van een student en zijn scores:

public class Record
{
    public string Student;
    public int[] Scores;
} 
antwoordde op 02/12/2008 om 09:08
bron van user

stemmen
1

Wat je misschien wilt doen is het volgende: Als je de namen van je sorteren en je moet twee posities wisselen, doet u het dezelfde swap in de reeks scores. Op die manier zullen alle wijzigingen die u aanbrengt in de namen reeks worden weerspiegeld in de scores array. Als je klaar bent, zal de scores in dezelfde gesorteerde volgorde als de namen zijn.

Er zijn effectievere manieren om dit te doen met verschillende data structuren, zoals andere opmerkingen zullen laten zien.

antwoordde op 02/12/2008 om 09:12
bron van user

stemmen
0

Twee manieren: ten eerste, bij het sorteren van de namen, elke keer dat u wisselen twee namen, wisselen de rijen (of kolommen of hoe je ze ook wilt noemen) van scores in dezelfde posities. Aan het einde moet de scores nog steeds in sync met de namen.

Ten tweede, in plaats van het sorteren van de namen, maakt een derde array die de indexen in een van de andere twee arrays bevat, eerst 0 tot n-1, maar dan gesorteerd, vergelijken naam [a] en de naam [b], in plaats van het sorteren de namen serie zelf.

antwoordde op 02/12/2008 om 09:18
bron van user

stemmen
2

Definieer een eenvoudige Student klasse als volgt uit:

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
}

dan nog eenvoudiger

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

zal het werk voor u doen.

antwoordde op 02/12/2008 om 09:40
bron van user

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