Avatar billede jespersahner Nybegynder
02. april 2006 - 16:30 Der er 5 kommentarer og
1 løsning

Sortere flere arrays/Collections efter samme nøgle

Antag at man har flere objekter o1, o2,..., on, som alle er arrays/Collections. Objektet o1 sorteres nu. Hvordan får man nu o2,...,on på "samme måde" som o1?

Eks.:
int[] o1={13,7,44,19};
String[] o2={"en","Hav","dag","god"};

- skal sorteres som:
o1={7,13,19,44};
o2={"Hav","en","god","dag"};
Avatar billede arne_v Ekspert
02. april 2006 - 17:04 #1
det nemmeste er selv at lave sorteringen og "slæbe det andet array med"
Avatar billede arne_v Ekspert
02. april 2006 - 17:08 #2
skitseret:

for(int i = 0; i < o1.length - 1; i++) {
    for(int j = i + 1; j < o1.length; j++) {
        if(o1[i] > o1[j]) {
            tmp = o1[i];
            o1[i] = o1[j];
            o1[j] = tmp;
            stmp = o2[i];
            o2[i] = o2[j];
            o2[j] = stmp;
        }
    }
}
Avatar billede jespersahner Nybegynder
02. april 2006 - 17:17 #3
->arne_v: I gamle dage, hvor jeg programmerede i APL, havde man en "rank-function", hvor man fik returneret rangen af en vektor. Man kunne herefter bruge rang-vektoren som argument for den vektor, man ville sortere. Videre kunne man så anvende rang-vektoren på andre vektorer, som så blev sorteret på samme måde.

Har man ikke noget tilsvarende i Java?

Eks.:
o1={13,7,44,19};
Rangen er her rank={1,0,3,2}, dvs.
o1[rank]={7,13,19,44}.
Avatar billede arne_v Ekspert
02. april 2006 - 17:22 #4
ikke jeg kender

du kan lave er integer array med værdier 0..n-1 og så slæbe det med som ovenfor
og bruge det bagefter

den slags teknikker er normalt ikke in i OOP fordi man der vil antage at du har
et enkelt array af en klasse med 2 felter (og det har Java fremragende
muligheder for at sortere)
Avatar billede jespersahner Nybegynder
13. maj 2006 - 04:14 #5
->arne_v: Smid gerne et svar.
Avatar billede arne_v Ekspert
13. maj 2006 - 04:16 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester