Avatar billede holgerd Nybegynder
28. december 2001 - 16:14 Der er 3 kommentarer og
1 løsning

kan man bytte elementer i to lister hurtigere end...

Er der en for for indbygget funktion til at bytte elementer i to lister?
T = a[i];
a[i] = a[j];
a[j] = T;
Avatar billede holgerd Nybegynder
28. december 2001 - 16:15 #1
husk vi taler java her
Avatar billede carstenknudsen Nybegynder
28. december 2001 - 16:28 #2
Nej det er der ikke.  Den måde du har skrevet det op på er den hurtigste måde at gøre det på. Hvis du har objekter er det referencer der rykkes rundt på så det vil være meget hurtigt selvom objekterne er meget store.
Avatar billede jakoba Nybegynder
28. december 2001 - 23:39 #3
Der er faktisk en hurtigere måde. Men den kræver at i og j er faste værdier og ikke tællevariable:

  int diff = i-j;
  j += diff;
  i -= diff;

listen ændres slet ikke, men herefter vil a[i] returnere den vædi der før blev returneret af a[j] og omvendt.

dog næppe det du har brug for :-)

mvh JakobA
Avatar billede carstenknudsen Nybegynder
29. december 2001 - 10:33 #4
Det er en noget speciel måde at gøre det på og vil næppe kunne virke fornuftigt med mindre du har en og kun en ombytning. Husk på at du skal gemme dit i-j par et eller andet sted og alle der beder om a[i] skal bruge din magiske globale variabel i, det er næppe nogen god ide.
I en sortering f.eks. vil du skulle ombytte, lad os sige, tusinder af elementer, og der vil du skulle holde rede på tusindvis af (i,j) par der alle er forskellige, der er ingen tvivl om at det ikke vil kunne gøres uden et vist overhead.
Godt nytår :)
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