Avatar billede petermjensen Nybegynder
16. januar 2004 - 12:59 Der er 8 kommentarer og
1 løsning

Binære træer

Jeg er igang med at kigge på lidt binære træer.. (i det hele taget, datastrukture der egner sig med hurtige lookups / indeholde megen data)

Jeg har så kigget en del på AVL træ'er.

Få at teste det af har jeg så fundet noget kode på et AVL træ. Virker fint.
Men mit problem er at det er med decimaler. Jeg har brug for det skulle være text lookups.
Hvordan gør man det rent teknisk?
Min umiddelbare idé er at kigge på chars:
Indsæt "foo" .."få" og "fup" findes.
f == f
o < å
dvs:

  fup
  /  \
foo  få

Men hvor skal f.eks "f" så være?
Er et ord med mindre chars, større end ord med flere chars?

Eller kan man f.eks give hvert bogstav en int?
Eg.: F = 1, O = 2, O =  2    = 122

Håber jeg har foklaret det godt nok :o)
Avatar billede arne_v Ekspert
16. januar 2004 - 13:18 #1
"f" < "foo"
Avatar billede arne_v Ekspert
16. januar 2004 - 13:19 #2
Alle bogstaver har en integer værdi.

(int)'f' vil give 102 (hvis jeg husker rigtigt)
Avatar billede petermjensen Nybegynder
16. januar 2004 - 13:34 #3
oki?
Så det man bare skal gøre, er at lave en sammenligning, som:
på strengene? Så finder den selv ud af at "få" > "foo" osv?
Avatar billede petermjensen Nybegynder
16. januar 2004 - 13:36 #4
Såån rent perfomance, kan det så godt betale sig f.eks (det vil gøre det lidt lettere :o) ) at sige noget a'la:
(int)'f' = 102
(int)'o' = 103
(int)'f' = 103
lookup(308)
Avatar billede petermjensen Nybegynder
16. januar 2004 - 13:37 #5
ups.. ^ skulle ha' stået

(int)'f' = 102
(int)'o' = 103
(int)'o' = 103
lookup(308)
Avatar billede arne_v Ekspert
16. januar 2004 - 13:41 #6
Hvis du bruger:

  strcmp(s1,s2)

så bør den returnere:

<0 hvis s1 < s2
0  hvis s1 = s2
>0 hvis s1 > s2

uden at du selv skal tænke på at sammenligne enkelte bogstaver.
Avatar billede petermjensen Nybegynder
16. januar 2004 - 13:48 #7
oki? Det var da dejligt :oD

Tak for hjælpen :o)
Læg lige et svar.. Jeg tror jeg har det plads nu :o)
Avatar billede arne_v Ekspert
16. januar 2004 - 13:51 #8
svar
Avatar billede petermjensen Nybegynder
16. januar 2004 - 13:56 #9
Tak !
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