Linear Search'a göre genelde uzun sıralı dizelerde daha hızlı oluyor.
Kod:
#include <stdio.h>
#include <stdlib.h>
int binarySearch(int dizi[], int lower, int higher, int arananDeger)
{
while (lower <= higher)
{
int medium = lower + (higher - lower) / 2;
if (dizi[medium] == arananDeger)
return medium;
if (dizi[medium] < arananDeger)
lower = medium + 1;
else
higher = medium - 1;
}
return -1;
}
int main()
{
int sayilar[] = {1,2,7,10,30,50,186}; //kendiniz degistirebilirsiniz.
int arananSayi;
int boyut = sizeof(sayilar) / sizeof(int);
while (1)
{
printf("Dizi icinde nerede oldugunu ogrenmek istediginiz sayiyi giriniz.\n");
scanf("%d", &arananSayi);
int aramaSonuc = binarySearch(sayilar, 0, boyut - 1, arananSayi);
if (aramaSonuc >= 0)
printf("Aradiginiiz sayi %d. indekstedir.\n", aramaSonuc);
else
printf("Aradiginiiz sayi bulunamadi.\n");
}
system("pause");
return 0;
}