#include <stdio.h>
#include <stdlib.h>
int binarysearch(int dizi[],int endusuk,int enyuksek,int aranansayi){
while(endusuk<=enyuksek){
int mid=(endusuk+enyuksek)/2;
if(dizi[mid]==aranansayi){
return mid;
}
else if(dizi[mid]>aranansayi){
enyuksek=mid-1;
}
else{
endusuk=mid+1;
}
}
return -1;
}
int main()
{
int dizi[20],boyut;
printf("Olusturmak istediginiz dizinin eleman sayisini giriniz:\n");
scanf("%d",&boyut);
printf("Lutfen dizinizin elemanlarini kucukten buyuge sirali sekilde giriniz:\n");
for(int i=0;i<boyut;i++){
printf("Dizinin %d. elemani:",i+1);
scanf("%d",&dizi[i]);
}
int aranansayi;
printf("Dizide aramak istediginiz sayiyi giriniz:\n");
scanf("%d",&aranansayi);
int indis=binarysearch(dizi,0,boyut-1,aranansayi);
if(indis<0){
printf("Aradiginiz sayi girdiginiz dizide bulunmamaktadir.");
}
else{
printf("Aradiginiz sayi %d. indistedir.",indis);
}
return 0;
}
Yukarıda yazdığım kod bir binary search algorithm kodu. Ama sadece dersi dinlediğimde ortadaki elemanın indisini endusukelemaninindisi+(enyuksek-enudusuk)/2 şeklinde bulurken ben direk endusuk+enyuksek/2 yaparak yazdım ve hiçbir sıkıntı çıkarmadı.Ya da ben bulamadım.Yaptığım yanlışı görebilecek veya söyleyebilecek var mı?(Kod 2 şekilde de bana göre hatasız çalışşıyor.)