Bilgisayar bilimlerinde, çeşitli veri yapılarının (datastructures) üzerinde bir bilginin aranması sırasında kullanılan algoritmaların genel ismi Arama Algoritmaları olarak geçer.
Yapısal olarak arama algoritmalarını iki grupta toplamak mümkündür.
- Uninformed Search (Bilmeden arama)
- Informed Search (Bilerek arama)
İkili arama algoritması da bilmeden arama grubunda bir algoritmadır. Belirli bir dizi içinde bize verilen değişkenin yerini bulmaya çalışırız. İkili arama algoritması için bir dizinin sıralı olması gerekmektedir. Yani ikili arama sıralı diziler üzerinde arama yapmak için kullanılan bir algoritmadır. Üzerinde arama yapılacak olan dizi sıralı durumda değilse bu algoritmanın doğru çalışabilmesi için öncelikle dizinin sıralı hale getirilmesi gerekir. İkili arama algoritması çalışmaya başladığında ilk olarak dizinin ilk ve son elemanlarının konumları tespit edilir. Bu bilgilerden faydalanılarak orta elemanın konumu hesaplanır. Daha sonra aranan eleman dizinin orta elemanıyla karşılaştırılır ve ikisinin eşit olup olmadığına bakılır. Aranan eleman orta elemana eşit ise arama başarılı bir şekilde sonlandırılır. Aksi takdirde aranan elemanın dizinin orta elemanından küçük veya büyük olma durumu incelenir. Aranan eleman orta elemandan büyük ise aramaya orta eleman ile son eleman arasındaki dizi elemanları ile devam edilir. Tam tersi durum söz konusu ise aramaya ilk eleman ile dizinin orta elemanı arasındaki dizi elemanları ile devam edilir. Bu işlem her tekrar edildiğinde ilk, orta veya son elemanların konumlarının değişmesi söz konusu olabilir. Örneğin ilk ve son elemanın konumlarının 1 ve 3 olduğu durumda orta elemanın konumu bu iki sayının ortalaması olan 2 sayısı olacaktır. Buna karşın ilk ve son elemanın konumlarının 4 ve 7 olduğu durumda orta elemanın konumu 5 olacaktır. Orta elemanın konumunun tam sayı olması zorunludur. Bu örnek hesaplamada iki sayının ortalaması olan 5,5 sayısının ondalıklı olan kısmı bu sebeple atılmakta ve bir tam sayı elde edilmektedir. Algoritmanın çalışması tamamlandığında aranan eleman dizide bulunamamışsa, arama işlemi başarısız bir şekilde sonlandırılır. (Şekil)
İkili arama algoritması lineer arama algoritmasına göre çok daha hızlı çalışmaktadır. Bunun için aşağıda ki animasyonları dikkatlice incelemelisiniz.
*****************************************************************************************
*****************************************************************************************
*****************************************************************************************
*****************************************************************************************
*****************************************************************************************
*****************************************************************************************
Flowgorithm uygulaması ile bir flowchart çalışması yaptım. Aşağı da bulabilirsiniz.
Algoritmanın tamamını da buradan indirebilirsiniz.
Ayrıca algoritmanın Python kodlarını buradan indirebilirsiniz.