Avatar billede wampiro-uha Nybegynder
19. marts 2004 - 21:07 Der er 11 kommentarer og
1 løsning

Sorter array efter et andet array!

Jeg har lige et til spm i Java-kategorien :-)

Er det muligt at sortere et array efter et andet array.
Det er 2 ens arrays, bare sorteret forskelligt. Altså det ene er en clon af det andet.

Arrayet består af objecter og hvert object har et object[i].navn
som det ene array skal sorteres efter.
Avatar billede arne_v Ekspert
19. marts 2004 - 21:10 #1
Kan du forklare lidt nærmere evt. komme med et lille eksempel på
hvad det er du vil ?
Avatar billede dennispc Nybegynder
19. marts 2004 - 21:19 #2
jeg er lige med på en lytter.. men er helt enig med arne v - uddyb venligst dit problem så vi kan forsøge at hjælpe...
Avatar billede wampiro-uha Nybegynder
20. marts 2004 - 01:58 #3
Det jeg vil er hvis jeg f.eks. har array1:

ar1[1,2,3,4,5,6,7,8,9];

og array2:

ar2[9,1,5,2,3,4,7,6,8];

Altså 1 er samme element i begge arrays, 2 er ens osv.
Array2 er nemlig en clon af array1, men som er sorteret efterfølgende.

Nu vil jeg godt have array2 tilbage i samme rækkefølge som oprindeligt, dvs. i samme rækkefølge som array1.

Array2 behøver ikke at blive sorteret efter array1, hvis det er muligt på anden vis at få den oprindelig rækkefølge ordnet.

Bedre forklaring? :-)
Avatar billede arne_v Ekspert
20. marts 2004 - 09:47 #4
Ja.

Men jeg kan ikek se behovet.

Du har jo ar1 så hvorfor lave ar2 om til at ligne ar1 ?
Avatar billede wampiro-uha Nybegynder
20. marts 2004 - 13:20 #5
Hmmm. Jeg prøver at stille spm'et på en anden måde så.

Hvordan kan jeg få et array som jeg har sorteret i, tilbage i sin oprindelig rækkefølge?

Grunden til at jeg indtil nu har clonet mit array, er netop for at have den oprindelige rækkefølge et eller andet sted. Men jeg er åbent for alle forslag.
Avatar billede wampiro-uha Nybegynder
20. marts 2004 - 13:22 #6
Min grund til at få det tilbage i sin oprindelige rækkefølge er fordi jeg laver nogle forskellige operationer på mit array, hvorefter jeg udskriver noget data.
Dette gør jeg flere gange, men en af gangene omfatter mine operationer en sortering.

Dette medføre at mine uddata (som er udskrivning af arrayet flere gange) have forskellige opsætning.

Hvis ovenstående kommentar forvirre mere end gavner, så ignore den og bare forhold jer til min kommentar kl. 13.20.26 :-)
Avatar billede arne_v Ekspert
20. marts 2004 - 16:16 #7
Hvis du kloner før du sorterer har du jo en kopi af det oprindelige og så
behøver du ikke sortere tilbage.

Hvis du ikke kloner, så er du nødt til at have et felt som du kan sortere
tilbage på.
Avatar billede arne_v Ekspert
20. marts 2004 - 16:18 #8
Vær opmærksom på at en array clone er shallow ikke deep d.v.s. at det oprindelige
og det sorterede array peger på de samem objekter bare sorteret forskellig.
D.v.s. at rettelser i det sorterede array også laver i det oprindelige array
(på samme objekt som bare er placeret anderledes).
Avatar billede wampiro-uha Nybegynder
20. marts 2004 - 18:58 #9
hmmm... ok.... man kunne jo selvfølgelig lave et felt i objectet som talte op efterhånden som de kom ind. og så sortere efter det.

Der er ikke en måde hvorpå man kan få deres index ud vel? Ved godt det bliver ændret efter min sortering...
Avatar billede wampiro-uha Nybegynder
20. marts 2004 - 18:59 #10
lav lige et svar :-)
Avatar billede arne_v Ekspert
20. marts 2004 - 19:01 #11
svar
Avatar billede arne_v Ekspert
20. marts 2004 - 19:02 #12
Det er iøvrigt ret nemt at lave:

public class X {
  private static int total = 0;
  private int ix;
  public X() {
      total++;
      ix = total;
  }
  ...
  public int getIx() {
      return ix;
  }
}
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