İçeriğimizde Binary Search teriminin ne anlama geldiğine ilişkin olarak bilgilere yer veriyor, Linear Search ile Binary Search arasındaki farklara değiniyoruz.
Linear Search, doğrusal arama olarak bilinmekte olup, genellikle her programcının ilk kodlamaya başladığı zamanlarda kullandığı arama yöntemi olarak bilinmektedir. Aramış olduğunuz elemanı bulabilmek için sırayla dizinin tüm elemanlarına aranan elemanı bulana dek bakarsınız. Fakat Binary Search üzerinde durum farklıdır çünkü Dividie and Conquer yaklaşımı ile çalışmaktadır. Dizinin tüm elemanlarını gezmeye gerek kalmaz. Binary Search, programlama dilinde en bilinen algoritmalardan biridir. Bu bağlamda en popüler iki arama algoritma Linear ve Binary Search’tır.
Algoritmanın verimli olup olmadığını tespit edebilmek için büyük Onotasyon kullanılmakta olup, algoritmanın çalışma hızı, donanımı gibi dış faktörler sebebiyle farklılık gösterebileceğinden algoritmanın hızını belirleyebilmek adına saniyeleri kullanmak yerine gerçekleştirdiği işlem sayısından yararlanılmaktadır. Linear Search’te algoritma n indeksindeki elemanı bulabilmek için tam n kere karşılaştırma yapacağı için büyük-Onotasyonunu O(n) şeklinde göstermektedir.
Algoritma dizinin ilk elemanından başlayıp dizinin sonuna dek tüm elemanlara teker teker bakmaktadır. Eğer bakılan eleman aradığımız değere eşit ise o halde elemanın indeksini döndürmektedir. Elinizdeki dizinin bir milyon adet elemana sahip olduğunu düşündüğünüz zaman bir milyon kez karşılaştırma yapmak sisteminizi çok zorlayacaktır ancak bunun yerine Binary Serach’ü kullanmak, Parçala ve Fethet olarak tabir edilen yaklaşım ile beraber sıralı bir listeyi ortasından bölerek adadığı elemanı bulmaya çalıştığından daha pratik olacaktır.
Binary Search, aradığı değeri verilen dizinin ortasındaki elemanla karşılaştırmaktadır ve eşit ise direkt ortadaki elemanın çıktısını sağlamaktadır. Eğer eşit çıkmıyor ise aynı işlemi sağdaki kısımla yapmakta, küçükse soldaki kısımla yapmaktadır. “arr” değişkeni arayacağınız dizin anlamına gelmekte, valua aranılan değer anlamına gelmekte, low ve high ise dizini her seferinde böleceğinden oluşturacağınız mini dizinlerin ana dizindeki indeksleri anlamına gelmektedir.