c dizilerde ikili arama
c dizilerde ikili arama :
#include <stdio.h> #define BOYUT 15 int main() { int a[BOYUT], i, anahtar, j; for ( i = 0; i <= BOYUT - 1; i++ ) { a[ i ] = 2 * i; } printf( "0 ile 28 arasında bir sayı giriniz: " ); scanf( "%d", & anahtar ); printf( "\nBelirteçler:\n" ); for ( j = 0; j <= BOYUT - 1; j++ ){ printf( "%3d ", j ); } printf( "\n" ); for ( j = 1; j <= 4 * BOYUT; j++ ) { printf( "-" ); } printf( "\n" ); int orta, sonuc=0, enUst=BOYUT-1, enAlt=0; while (enAlt<= enUst) { orta = ( enAlt + enUst ) / 2; int k; for ( k = 0; k <= BOYUT - 1; k++ ) { if ( k < enAlt || k > enUst) { printf( " " ); } else if ( k == orta) { printf( "%3d*", a[ k ] ); } else { printf( "%3d ", a[ k ] ); } } printf( "\n" ); if (anahtar == a[orta] ) { sonuc=orta; break; } else if (anahtar < a[orta] ) { enUst = orta - 1; } else { enAlt = orta + 1; } } if (sonuc== 0 ) { printf( "\n%d bulunamadı\n", anahtar); } else { printf( "\n%d, dizi elemanı %d içinde bulundu\n", anahtar, sonuc); } return 0; }