İkili Arama

Veri Yapıları ve Algoritmalar

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 cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir