> M�ske kunne vi bruge tr�sorteringen som et eksempel p�, hvordan man
> kunne lave det, hvis det drejer sig om at kunne finde sine data
> hurtigt igen.
Mja, jeg ville nu foretr�kke quicksort, ogs� fordi den jo er s�rdeles
kendt - det er den man faktisk (i lettere modificeret udgave) bruger.
> Apropos pointere: kan du f� gdb til at vise indholdet af et element?
> Hvis jeg pr�ver med 'print Element->Naeste' brokker den sig over at
> der ikke er noget 'medlem' der hedder 'naeste', 'Naeste' eller hvad
> jeg nu pr�ver med.
Tja, det er lang tid siden jeg sidst har pr�vet at bruge gdb, og
dengang var det kun overfladisk. Jeg plejer at klare mig med at
udskrive henvisningsv�rdierne undervejs ved at tilf�je sm� kald i
koden.
I anledning af at det lykkedes mig at blive f�rdig med den sidste
fysikrapport i l�bet af blot 5/2 timer, har jeg kigget lidt p� din
kode. Jeg m� tilst� at jeg ikke umiddelbart forst�r den helt - det ser
ud til at du fors�ger at flytte elementerne om bag pivoten i den samme
liste hver gang et element er st�rre? Er det af optimeringshensyn?
I s� fald vil jeg lige benytte lejligheden til at tr�kke et citat af
Don Knuth ud af �rmet, "premature optimization is the root of all
evil" (idet det godt nok ikke helt er t�nkt brugt i denne sammenh�ng,
men det beh�ver I jo ikke at vide ;-).
Jeg tror det smarteste er at skrive algoritmen om til noget i denne
retning:
pivotsortering:
st�rre = nil
lavere = nil
pivot = find_pivot
l�b alle elementerne igennem
hvis st�rre end pivots n�gle
anbring i st�rre { husk at tilfoej_element kan bruges }
ellers
anbring i lavere
kald pivotsortering med st�rre
kald pivotsortering med lavere
return�r liste sammensat af lavere, pivot og st�rre
hvor
find_pivot:
return�r f�rste element
i f�rste omgang. Trinet med at sammens�tte den endelige liste ud af
pivotelementet og de to andre lister b�r nok udarbejdes i en s�rskilt
rutine af overskuelighedshensyn (en rutine b�r kun g�re ca. en ting).
Er dette ikke lettere at g� til? N�r dette virker, kan vi s� senere
optimere p� det - det kunne jo faktisk v�re smukt at give et rids over
forfinelsen fra dette f�rste udkast til den endelige version (m�ske
bliver det for langt med kode i rapporten, men s� m�ske med
pseudokode).
Jeg evt. skrive koden til denne udgave, det er ikke noget problem, men
jeg t�nkte at det ville fjerne det sjove ved. Men skal jeg alligevel?
--
Ole Laursen
http://sunsite.dk/olau/