c dizilerde ikili arama

Kategori

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;
}

 

Facebookta Paylaş Tweetle