10. juni 2003 - 12:32Der er
1 kommentar og 1 løsning
søgning i arrays (rekursiv)(binær)?
Hej Jeg har et array i ASP, som jeg gerne skulle have lavet en knaldhurtig søgning på. Så er der nogen som har en opskrift på hvordan det skal bygges op
Det jeg har er: Et sorteret array 2D, hvor der findes en søjle med sprogid og en søjle med Tekst.
Nu kommer jeg så med sprogid i hånden, og vil meget gerne blaste gennem array'et og genfinde det sprogid, jeg har i hånden , i arrayet. (sådan at den kan udløse den tilhørende tekst.
Men array bliver temmeligt langt, og funktionen skal køre mange gange, når en side bygges op, så jeg bryder mig ikke om, at skulle lave en "Do while Notfound", hvor man starter i toppen og kører igennem en masse elementer til man finder den.
Er der nogen som har en god opskrift på en sådan søgning i arrays ?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du siger du har sorteret arrayet, og jeg gaar ud fra at det er paa "sprogid".
Saa hurtigste soegning vil nok vaere en binaersoegning, som sker i O(log(n)) tid frem for While.. som tager O(n) tid.
Denne algortitme skal du nok lave lidt om i saa den passer dit problem. Men modellen er heldigvis ret generel, og du burde vaere i stand til at tilpasse den til din kode.
public static boolean contains(int item, int[] array) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = (low + high) / 2; if (item < array[mid]) { high = mid - 1; } else if (item > array[mid]) { low = mid + 1; } else { return true; } } return false; }
Ja det var sådan noget jeg fiskede efter. Det er vel ikke noget i vejen for at item og array(mid) er chars og ikke integers ?
Så i stedet for at returnere true tager jeg array(mid)-Teksten, for det er vel her svaret på den jeg ønsker at finde. Altså index mid, som holder den ønskede værdi.
hvad nu hvis mit item = den sidste i arrayet returner den så ikke false ?
Men jeg stoler på, at det virker når jeg nu kommer jeg og prøver det af. tak for det .
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.