İkili Arama(Binary Search) Algoritması C Kodu

Bu yazı faydalı oldu mıı?

  • Evet

    Kullanılan: 1 100.0%
  • Hayır

    Kullanılan: 0 0.0%

  • Kullanılan toplam oy
    1

Bu konuyu okuyanlar

erkankarabulut

Öğrenci
Katılım
18 Mart 2016
Mesajlar
30
Reaksiyon puanı
6
Puanları
8
Yaş
26
İkili Arama(Binary Search) Algoritması C Kodu


C dili dersleri serisinin bu dersinde ikili arama algoritmasının, İngilizcesi ile binary search algoritmasının c programlama dilindeki kodlamasını yapacağız.

İkili arama "İkili Arama(Binary Search) Algoritması ve Akış Diyagramı" adlı algoritma dersinde anlattığımız gibi dizinin ardışık elemanlarını kendi arasında karşılaştırmak suretiyle aranan elemanın yerini bulan bir algoritmadı. İkili arama algoritmasını daha detaylı öğrenmek ve akış diyagramına ulaşmak için buraya tıklayın.

Kısaca ikili arama algoritmasını tekrardan anlatmak gerekirse:

- Sıralı dizinin ortanca elemanıyla aranan elemanı karşılaştırırız.
- Dizinin büyükten küçüğe sıralı olduğunu ve aranan elemanın ortanca elemandan büyük olduğunu varsayarsak, bu seferde dizinin baştaki yarısının ortanca elemanıyla aranan elemanı karşılaştırırız.
- Büyükse baş taraftaki 1/4 lük kısmın ortanca değeriyle, küçükse son tarafındaki 1/8 lik kısmın ortanca terimiyle tekrar karşılaştırılır.
- Bu şekilde karşılaştırmalar yapılarak aranan elemanın yerine ulaşılır.

İkili Arama(Binary Search) Algoritması C Kodu


Kaynak Kod:
Kod:
#include <stdio.h>

int main()
{
      static int boyut,x,y,dizi[100],kontrol,i,aranan,alt,ust;
      printf("Dizinin boyutunu giriniz :"); scanf("%d",&boyut);
      for(i=0;i<boyut;i++)
      {
            printf("Sirali dizinin %d. elemanini giriniz :",i+1); scanf("%d",&dizi[i]);
      }
      printf("Aradiginiz elemani giriniz :"); scanf("%d",&aranan);
      alt=0;
      ust=boyut-1;
      while(alt<=ust)
      {
           kontrol++;
           y=(ust+alt)/2;
           if(dizi[y]==aranan)
           {
                 printf("Aradiginiz eleman %d. siradadir.",y+1);
                 break;
           }
           else if(dizi[y]<aranan)
           {
                 alt=y+1;
           }
           else if(dizi[y]>aranan)
           {
                 ust=y-1;
           }
      }
      if(alt>ust)
      {
           printf("Aradiginiz eleman dizide bulunmamaktadir.");
      }
      return 0;
}

Kod Analiz:

- Öncelikle dizinin boyutunu ve diziyi kullanıcıdan aldık.
- Daha sonra kullanıcıdan dizide aramasını istediği elemanı aldık.
- Ortanca elemanı y değişkenine eşitleyip do-while döngüsü içerisinde kullandığımız if yapılarıyla aranan değerin ortanca değerden büyük yada küçük olduğunu bulduk.
- Dizinin küçükten büyüğe sıralı olduğunu ve aradığımız elemanın ortanca elemandan büyük olduğunu varsayalım.
- Bu durumda ortanca elemanın bir fazlasını artık en küçük eleman olarak kabul edip, en küçük ve en büyük yani artık ortanca ve en büyük değer arasında başka bir ortanca eleman buluruz.
- Tersi durumda ise ortancanın bir küçük elemanını dizinin en büyük elemanı olarak kabul edip, yeni ortanca değeri belirleriz.
- Ortanca değer bulduğumuzda ekrana yazdırıp break komutuyla döngüyü sonlandırırız.
- Bu şekilde ilerledikten aradığımız elemana ulaşırız.
- Do-while döngüsü her döndüğünde alt değerle üst değeri karşılaştırıp eğer alt değer üst değerden büyük olmuşsa döngüyü sonlandırırız.

Ekran Görüntüleri:

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528243%2529.png


Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528244%2529.png


C dili dersleri serisinin bu dersinde ikili arama, İngilizcesiyle binary search algoritmasının c programlama dilinde kodlamasını yaptık.

Ayrıca "Bubble Sort Algoritması C Kodu" için buraya tıklayın.

"İkili Arama Algoritması C Kodu" adlı bu makaleyi beğendiyseniz lütfen yorum yapmayı ve paylaşmayı unutmayın.

Kaynak: Pubtekno
 
Üst