N
Necati soruyu yanlış anlamışsın sayıyı 2lik sisteme çeviren programı istememiş. Binary(ikilik) arama olayı var ya onu istemiş.
Pardon ben yanlış anlamışım :rolleyes:
Neyse Binary Search algoritması:
#include <iostream>
#define SIZE 10 // 10 tane rastgele sayı üretilir
int main()
{
int i, k;
int a[SIZE];
int val;
int low, mid, high;
srand(time(0));
for (k = 0; k < SIZE; ++k)
a[k] = rand() % 100;
for (i = 0; i < SIZE - 1; ++i)
for (k = 0; k < SIZE - 1 - i; ++k)
if (a[k] > a[k + 1]) {
int temp = a[k];
a[k] = a[k + 1];
a[k + 1] = temp;
}
printf("Dizi degerleri:\n");
for (k = 0; k < SIZE; ++k)
printf("%d ", a[k]);
printf("\n\nAranacak deger = ");
scanf("%d", &val);
low = 0;
high = SIZE - 1;
while (low <= high) {
mid = (low + high) / 2;
if (a[mid] == val)
break;
if (a[mid] > val)
high = mid - 1;
else
low = mid + 1;
}
if (low > high)
printf("Bulunamadi!");
else
printf("Bulundu! a[%d] = %d", mid, val);
scanf("%d");
return 0;
}
sanirim binary seach(ikili arama) yi soruyosun... bu aramayi iki sekilde yapabilirsin istersen recursive(özyinelemeli) yada iterative(yinelemeli) yontem ile yapabilirsin...
direk kodu vermeyip te isin aslini anlatmanin sizin yarariniza olacaktir...
asagida anlatacagim mantigi recursive yada iterative olarak da dusunebilirsiniz onemli hatirlatma bir dizide ikili arama yapabilmek icin dizinin oncelikle sirali olmasi gerekir
ilk olarak arama yapılacak dizi ve aranacak anahtar degeri bilmemiz gerekiyor sonrasinda ise, gelen diziye her defasinda iki ye boleriz eger ikiye boldugumuzde cikan deger li array elemani (arr[cikan deger]) aranan anahtar degerden buyukse sol tarafi (arr[cikan deger] in sol tarafindaki elemanlardan olsun parca arrayi) ikiye boleriz veya kucukse sag tarafi ikiye boleriz eger esitse zaten aranan anahtar eleman bulunmustur ve programi sonlandiririz
yani;
1,5,7,8,9,12,34,45,56 dizimiz olsun aranacak anahtar deger de 34 olsun once yukaridaki anlattigima gore ikiye parcalariz sonra (yani 9 un sag tarafi yeni arama yapacagimiz dizimiz olur),
12,34,45,56 parcalamadan sonra dizimiz bu hale gelir sonra bi daha parcalariz (45 in sol tarafi yeni arama yapacagimiz dizimiz olur)
12,34 yeni olusan bu dizimizi yine parcalarsak
34 (ve anahtar degeri bulduk):thumbup: