Hier ist Wikipedia Eintrag
Wenn Sie sich den einfachen iterativen Ansatz ansehen. Sie eliminieren nur die Hälfte der zu durchsuchenden Elemente, bis Sie das gewünschte Element gefunden haben.
Hier ist die Erklärung, wie wir auf die Formel kommen.
Angenommen, Sie haben anfangs N Elemente und dann tun Sie als ersten Versuch „N / 2“. Wobei N die Summe aus Untergrenze und Obergrenze ist. Der erste Zeitwert von N wäre gleich (L + H), wobei L der erste Index (0) und H der letzte Index der Liste ist, nach der Sie suchen. Wenn Sie Glück haben, befindet sich das Element, das Sie suchen, in der Mitte [z. Sie suchen nach 18 in der Liste {16, 17, 18, 19, 20} und berechnen dann ⌊ (0 + 4) / 2⌋ = 2, wobei 0 die Untergrenze ist (L - Index des ersten Elements des Arrays). und 4 ist die höhere Grenze (H - Index des letzten Elements des Arrays). Im obigen Fall ist L = 0 und H = 4. Jetzt ist 2 der Index des Elements 18, das Sie suchen, gefunden. Bingo! Du hast es gefunden.
Wenn der Fall ein anderes Array wäre {15,16,17,18,19}, aber Sie immer noch nach 18 suchen, dann hätten Sie kein Glück und würden zuerst N / 2 machen (das ist ⌊ (0 + 4) / 2⌋ = 2 und stellen Sie dann fest, dass Element 17 am Index 2 nicht die gesuchte Zahl ist. Jetzt wissen Sie, dass Sie bei Ihrem nächsten Versuch, iterativ zu suchen, nicht mindestens die Hälfte des Arrays suchen müssen Der Suchaufwand halbiert sich. Grundsätzlich durchsuchen Sie also nicht jedes Mal die Hälfte der Liste der Elemente, die Sie zuvor gesucht haben, wenn Sie versuchen, das Element zu finden, das Sie bei Ihrem vorherigen Versuch nicht finden konnten.
Der schlimmste Fall wäre also
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
dh:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
bis… Sie mit der Suche fertig sind und sich in dem Element, das Sie suchen, am Ende der Liste befindet.
Dies zeigt, dass der schlimmste Fall ist, wenn Sie N / 2 x erreichen, wobei x so ist, dass 2 x = N ist
In anderen Fällen N / 2 x, wobei x so ist, dass 2 x <N Der Mindestwert von x kann 1 sein, was der beste Fall ist.
Nun, da der mathematisch schlechteste Fall ist, wenn der Wert von
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Formaler ⌊log 2 (N) + 1⌋