Bu algoritma sıralı diziler için kullanılır.
#include<stdio.h> #include<conio.h> #include<stdlib.h> main() { int dizi[]={1,4,6,12,33,123}; int aranan=123, enbuyuk=6, enkucuk=-1, bakilan; while ((enbuyuk-enkucuk)>1) { bakilan = (enbuyuk+enkucuk)/2; printf("\nenbuyuk %d enkucuk %d ", enbuyuk, enkucuk); if (aranan== dizi[bakilan]) { printf("\nbulundu"); break; } else if (aranan>dizi[bakilan]){ printf("\naranan %d degerdizi[%d]=%d",aranan,bakilan,dizi[(enbuyuk+enkucuk)/2]); enkucuk= bakilan; } else { enbuyuk=bakilan; } } }
unutulmaması gereken : enbuyuk ve enkucuk değerlerinin dizinin değerlerinden bir küçük ve bir büyük değerler seçilmesi gerektiğidir. Bizim örneğimizde enküçük -1 iken en büyük 6 olmuştur.
Bir yanıt bırakın Cevabı iptal et