bsearch Funktion

#4374692
Lesenswert?
• ▲
▼
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.
Gast #4374793
Lesenswert?
• ▲
▼
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'.
#4374797
Lesenswert?
• ▲
▼
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?
(Firma: Torrox.de) #4374818
Lesenswert?
• ▲
▼
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 ;-)
#4375918
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren