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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.