İşte wikipedia girişi
Basit yinelemeli yaklaşıma bakarsanız. İhtiyacınız olan öğeyi bulana kadar aranacak öğelerin yarısını ortadan kaldırmış olursunuz.
Formülü nasıl ortaya çıkardığımızın açıklaması burada.
Diyelim ki başlangıçta N sayıda elementiniz var ve sonra yaptığınız şey ilk deneme olarak ⌊N / 2⌋. N, alt sınır ve üst sınırın toplamıdır. N'nin ilk zaman değeri (L + H) 'ye eşit olacaktır; burada L, ilk dizin (0) ve H, aradığınız listenin son dizinidir. Şanslıysanız, bulmaya çalıştığınız öğe ortada olacaktır [ör. Listede {16, 17, 18, 19, 20} 18'i arıyorsun, ardından 0'ın alt sınır olduğu ⌊ (0 + 4) / 2 = 2'yi hesaplarsın (dizinin ilk elemanının L - indeksi) ve 4, üst sınırdır (dizinin son elemanının H-indeksi). Yukarıdaki durumda L = 0 ve H = 4. Şimdi 2, aradığınız element 18'in indeksidir. Bingo! Buldun.
Vaka farklı bir dizi olsaydı {15,16,17,18,19} ama hala 18'i arıyor olsaydın, o zaman şanslı olmazdın ve ilk N / 2'yi yapıyor olurdun (yani ⌊ (0 + 4) / 2⌋ = 2 ve sonra 2. dizideki 17. öğenin aradığınız sayı olmadığını anlayın. Artık yinelemeli arama için bir sonraki denemenizde dizinin en az yarısını aramanız gerekmediğini biliyorsunuz. Arama çabası yarı yarıya azalır.Yani temel olarak, önceki denemenizde bulamadığınız öğeyi her bulmaya çalıştığınızda, daha önce aradığınız öğe listesinin yarısını aramıyorsunuz.
Yani en kötü durum
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
yani:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
ta ki… aramayı bitirdiğinize kadar, bulmaya çalıştığınız öğenin neresi listenin sonundadır.
Bu, en kötü durumun N / 2 x'e ulaştığınız zamandır, burada x, 2 x = N
Diğer durumlarda N / 2 x burada x, 2 x <N olacak şekildedir Minimum x değeri 1 olabilir, bu en iyi durumdur.
Şimdi matematiksel olarak en kötü durum,
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Daha resmi olarak ⌊log 2 (N) + 1⌋