Hallo Leute, eine kurze Frage: Wieviele Vergleiche benötigt bsearch zum Sortieren von 100.000 Elementen? Vergleicht sie nicht das 1. Element mit den anderen 99.999, dann das 2. mit den restlichen 99.998 und so weiter? MfG
nein, bsearch macht binäre Suche (Intervallhalbierung nach jedem Vergleich). Deshalb müssen ja die Daten auch sortiert sein. Wer will das wissen? Hausuafgabe?
Peter schrieb: > Hallo Leute, > eine kurze Frage: > > Wieviele Vergleiche benötigt bsearch zum Sortieren von 100.000 > Elementen? > Vergleicht sie nicht das 1. Element mit den anderen 99.999, > dann das 2. mit den restlichen 99.998 und so weiter? Dann wäre es aber eine bescheuerte Funktion. In der Zeit als es noch gedruckte Telefonbücher gab, hat jeder das Verfahren des b_inary _search intuitiv angewendet. Telefonbuch in der Mitte aufschlagen. Steht der gesuchte Name dort? Ja->gefunden. Nein? In welcher Hälfte muss er sein - vordere oder hintere Hälfte? Dort dann wieder in der Mitte aufschlagen etc. etc. Genau aus diesem Grund waren Telefonbücher nach dem Namen sortiert.
Karl H. schrieb: > Dort dann wieder in der Mitte aufschlagen etc. etc. > Genau aus diesem Grund waren Telefonbücher nach dem Namen sortiert. wieso waren? Sind sie aktuell nach Rufnummer sortiert?
Peter II schrieb: > Karl H. schrieb: >> Dort dann wieder in der Mitte aufschlagen etc. etc. >> Genau aus diesem Grund waren Telefonbücher nach dem Namen sortiert. > > wieso waren? Sind sie aktuell nach Rufnummer sortiert? Telefonbücher gibt es nicht mehr. Es werden keine mehr gedruckt. Deshalb 'waren'.
Karl H. schrieb: > In der Zeit als es noch gedruckte Telefonbücher gab, hat jeder das > Verfahren des b_inary _search intuitiv angewendet. OT: Naja, sagen wir mal so "ähnlich": Es gibt ja noch Buckets als Unterstützung (Anfangsbuchstabe) und die Intervallhalbierung läuft bei mir zumindest nicht so optimal. ;-) Klaus W. schrieb: >> lb(n) > > aber nicht immer... Wann denn nicht?
:
Bearbeitet durch User
S. J. schrieb: > Wann denn nicht? lb(n) ist doch nur die obere Grenze. Wenn Du den Eintrag vorher findest, dann werden entsprechend weniger Vergleiche nötig.
:
Bearbeitet durch User
PittyJ schrieb: > Telefonbücher gibt es nicht mehr. http://www.telefonbuchversand.de/ das wissen scheinbar nicht alles und verkaufen es einfach noch.
Habe das so in Erinnerung, dass immer bis zum "Ende" gesucht werden muss (zwei nebeneinanderliegende Elemente). Der vewendete Operator ist ja "<" und nicht "==".
S. J. schrieb: > Habe das so in Erinnerung, dass immer bis zum "Ende" gesucht werden muss > (zwei nebeneinanderliegende Elemente). Der vewendete Operator ist ja "<" > und nicht "==". Ja, Du magst recht haben. Du halbierst den zu durchsuchenden Bereich mit jedem Schritt und prüft am Ende, ob Du das gesuchte Element gefunden hast. Da hat mich Klaus auf's flasche Gleis gelockt ;-)
Hat eigentlich irgendjemand mal die Frage gelesen? SCNR Peter schrieb: > Wieviele Vergleiche benötigt bsearch zum Sortieren von 100.000 > Elementen?
Torsten R. schrieb: > Ja, Du magst recht haben. Du halbierst den zu durchsuchenden Bereich mit > jedem Schritt und prüft am Ende, ob Du das gesuchte Element gefunden > hast. Da hat mich Klaus auf's flasche Gleis gelockt ;-) Das ist ein harter Vorwurf... Erstens gibt es Varianten von bsearch(), nicht alle sind exatk gleich. MAn kann durchaus jeweils in der Intervallmitte auf GLeichheit testen. Aber davon abgesehen ist die Länge auch nicht immer eine Zweierpotenz, und dann unterscheiden sich die Lauflängen zumindest um +/-1, je nachdem ob man in die kürzere oder die längere Hälfte verzweigt :-) Also exakt gleich ist es nicht immer...
Nase schrieb: > Hat eigentlich irgendjemand mal die Frage gelesen? SCNR > > Peter schrieb: >> Wieviele Vergleiche benötigt bsearch zum Sortieren von 100.000 >> Elementen? Dann heisst die Antwort also: unendlich viele, weil bsearch sortiert nicht ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.