Binary Search Algoritması

Linear Search'a göre genelde uzun sıralı dizelerde daha hızlı oluyor.

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

int binarySearch(int dizi[], int lower, int higher, int arananDeger)
{

    while (lower <= higher)
    {

        int medium = lower + (higher - lower) / 2;

        if (dizi[medium] == arananDeger)
            return medium;

        if (dizi[medium] < arananDeger)
            lower = medium + 1;

        else
            higher = medium - 1;
    }
    return -1;
}

int main()
{

    int sayilar[] = {1,2,7,10,30,50,186}; //kendiniz degistirebilirsiniz.
    int arananSayi;
    int boyut = sizeof(sayilar) / sizeof(int);

    while (1)
    {
        printf("Dizi icinde nerede oldugunu ogrenmek istediginiz sayiyi giriniz.\n");
        scanf("%d", &arananSayi);
        
        int aramaSonuc = binarySearch(sayilar, 0, boyut - 1, arananSayi);
      
        if (aramaSonuc >= 0)
            printf("Aradiginiiz sayi %d. indekstedir.\n", aramaSonuc);
        
        else
            printf("Aradiginiiz sayi bulunamadi.\n");
    }

    system("pause");
    return 0;
}

Yorumlar

Bilmeyenler için çalıştırma nasıl hocam?
{1,2,7,10,30,50,186}. Şimdi bu bizim dizimiz olsun. Ama sıralı olmalı. Şimdi başta bir değer, ortada bir değer ve sonda bir değer tutar. Yani küçük, orta ve büyük olmak üzere. Zaten lower, medium ve higher olarak tutmuşum ben de. Bizim burada 1 en düşük, 10 orta, 186 da en büyüğümüz olsun. Ama burada orta sayı tam olarak belirli olmaz. Çalışma mantığı şöyle, girilen sayıya bakar ve analiz eder. Ortadaki sayıdan büyükse sağ tarafına, küçükse sol tarafına doğru yol alır. Ve bu sürekli tekrar eder. Taa ki girilen sayı dizide bulunana kadar.
 
{1,2,7,10,30,50,186}. Şimdi bu bizim dizimiz olsun. Ama sıralı olmalı. Şimdi başta bir değer, ortada bir değer ve sonda bir değer tutar. Yani küçük, orta ve büyük olmak üzere. Zaten lower, medium ve higher olarak tutmuşum ben de. Bizim burada 1 en düşük, 10 orta, 186 da en büyüğümüz olsun. Ama burada orta sayı tam olarak belirli olmaz. Çalışma mantığı şöyle, girilen sayıya bakar ve analiz eder. Ortadaki sayıdan büyükse sağ tarafına, küçükse sol tarafına doğru yol alır. Ve bu sürekli tekrar eder. Taa ki girilen sayı dizide bulunana kadar.
Yok hocam öyle değil bazen sayı girince tepki vermiyor sanırım benle alakalı.
 
Güzel, algoritmaları öğrenmeye başlamışsın. Sort algoritmaları ve search algoritmaları veri yapıları ile birlikte bilgisayar mühendisliğinin en önemli konuları arasında yer alıyor.
 
Güzel, algoritmaları öğrenmeye başlamışsın. Sort algoritmaları ve search algoritmaları veri yapıları ile birlikte bilgisayar mühendisliğinin en önemli konuları arasında yer alıyor.
Hocam dun cezaliydim yazamadim kusura bakmayin. Oncelikle tesekkur ederim. Zaten amacim C ile algoritma, programlama mantigini ogrenmekti. Onu da az cok yaptim. Neyin ne olduğunu ogrendim denebilir. Ancak C'yi biraktim su an Python ogreniyorum. Aslinda C'den sonda C++ gecicektim ama biraz kolay olmasi acisindan ve projeler gelistirmek istedigimden Python'a gectim. Şimdi Python'un ustune koyacagim yani bayagi bir ogrenecegim. Sonra C++'ya dönebilirim veya C#'a. Ama en az bir 7 ay falan Python'da kalmayi düşünüyorum. Tekrar tesekkur eserim size de :)
 

Blog girdisi detayları

Ekleyen
342746
Okuma süresi
1 dakika okuma
Görüntüleme
659
Yorumlar
9
Son güncelleme

Yazılım kategorisindeki diğer girdiler

342746 adlı kullanıcının diğer girdileri

Bu girdiyi paylaş

Geri
Yukarı