14. oktober 2002 - 16:04Der er
6 kommentarer og 1 løsning
søge algoritme
JEg har brug for en søge algoritme der kan gøre dette. 1. jeg har en hashtable med nogle objekter, disse objekter har 2 variabler int x og int y : 2 koordinater. Denne hashtable er > 20 2. jeg skal så have en metode / søge algoritme der får en nyt sæt int, nyX og nyY med som input. Denne algoritme skal så finde de x objekter i hashtablen, der er nærmest det nye sæt koordinater nyX og nyY. Det er jo ikke så galt vel :)
ja det ved jeg men det er en Hashtable, så der bruger jeg enumeration, men det var mere til hvordan jeg lige gjorde det, så jeg vil lige se om jeg kan få implementeret dit første svar
arne_v>> kan du komme med et eksempel, og hvis man bare kører igennem denne hashtable 1 for 1 så er det vel ikke den mest optimale måde at gøre det på, der skal vel bruges en søge algoritme af en eller anden slags
Du bliver nødt til at løbe alle elementer i din hash tabel igennem.
Du kan ikke bruge den direkte lookup til noget.
Så:
Z z0 = det objekt som vi skal finde nærmeste object til; long minval = et eller andet ekstremt stort; Z minobj = null; while(e.hasMoreElements()) { Z z = (Z)e.nextElement(); long val = (z.x - z0.x) * (z.x - z0.x) + (z.y - z0.y) * (z.y - z0.y); if(val < minval) { minval = val; minobj = z; } }
For at val og minval var den ægte afstand skal man tage kvadrat-roden, men algoritmen virker lige godt uden, så det har jeg sparet.
Har først lige fået tid til at kigge på det nu, men takker !!
Synes godt om
Ny brugerNybegynder
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.