**Arama algoritmaları**, bilgisayar biliminde seçili özelliklere göre istenilen bilgileri bulan algoritmalardır. Listeler, metinler ve şekiller üzerinde çalışırlar.

Türleri
-------

### İkili arama algoritması

Ana madde: İkili arama algoritması
Aranılan diziyi ikiye bölecek şekilde bir eleman seçilir. Sağındaki ve solundakilere bakılır. Algoritmanın çalışması için dizinin sıralı olması koşulu bulunmaktadır. Bu şekilde aranan sayı bulunana kadar işlem yapılır. Algoritmanın çalışması örnek üzerinden şu şekilde açıklanmıştır:

[1,2,4,7,9,11,15]

şeklinde bir dizi verilmiş olduğunda, aradığımız sayının da 4 olduğunu kabul ettiğimiz takdirde, dizinin eleman sayısı 7'dir. Bu durumda ortadaki eleman 4. eleman olarak seçilir ve 7 sayısı ile aranan sayı kontrol edilir. 4<7 olduğu için 4. elemanın solundaki sayılara bakılır:

[1,2,4]

şeklinde elde edilen yeni alt dizinin üzerinde algoritma yeniden çalıştırılır. Dizinin eleman sayısı 3'tür ve ortadaki elemanı 2. eleman olarak seçilir. Eleman değeri 2'dir ve aranan değer 4 ile karşılaştırılır. 4>2 olduğu için 2. elemanın sağ tarafında arama devam eder:

[4]

Tek başına aranan elemanın bulunduğu 4 değeri kaldığından dolayı, bu değer ile aranan değer karşılaştırıldığında aranan değere ulaşılmış olur.

### Enine arama (Sığ öncelikli arama)

Ana madde: Enine arama
Bütün çizge aramalarında ve özellikle ağaç aramalarında daha sık kullanılır. Başlangıç düğümüne yakın düğümleri dolaşarak yoluna devam eder. Bir seviye uzaklaşmadan önce, o seviyeye kadar olan bütün düğümleri dolaşmış olması gerekir. Örneğin; ağaç araması sırasında, her satırda soldan sağa olmak üzere sıra ile bulana kadar arama yapar. Aranan düğüme ulaşmadan önce, aranan düğüm ile başlangıç düğümü arasındaki seviyelerde bulunan bütün düğümleri dolaşmak zorunda olması gibi bir dezavantajı vardır. Bu durum, algoritmanın hedefi bulmasını geciktirir. Resimdeki öncelik A-B-C-D-E-F-G-H-I-İ-J şeklindedir.

Öncelik sırası A-B-C-D-E-F-G-H-I-İ-JÖncelik sırası A-B-C-D-E-F-G-H-I-İ-J
Ayrıca ağaç olmayan bir çizgede de kullanılabilir. Örneğin aşağıdaki şekilde 1'den başlanarak dolaşılması halinde, öncelik 1-2-5-3-4-6 olacaktır.

Öncelik sırası 1-2-5-3-4-6Öncelik sırası 1-2-5-3-4-6
### Derin Öncelikli Arama (Depth First Search-DFS)

Ağaç yapılarında kullanılır. Arama işlemine, Yukarıdan aşağıya sol öncelikli olarak arama yapar. Resimdeki aramada öncelik A-B-C-D-E-F-G-H-I-İ-J şeklindedir.  

Öncelik sırası A-B-C-D-E-F-G-H-I-İ-JÖncelik sırası A-B-C-D-E-F-G-H-I-İ-J
Enine arama algoritmasında verilen örnek grafın aynısı derin öncelikli olarak aransaydı, muhtemel arama sıralamalarından birisi 1-5-4-6-2-3 olabilirdi

Öncelik sırası 1-5-4-6-2-3Öncelik sırası 1-5-4-6-2-3

Ayrıca bakınız
--------------

* Dizi arama algoritması
* Komut çizelgesi
* Sezgisel algoritma
* Tanrının algoritması

Dış bağlantılar
---------------

* Bilgisayar Kavramları : Arama Algoritmaları 4 Nisan 2012 tarihinde Wayback Machine sitesinde arşivlendi.

| * g
* t
* d
Bilgisayar biliminin alt dalları |
| --- |
| Matematiksel temeller | Matematiksel mantık **·**  Kümeler kuramı **·**  Sayı teorisi **·**  Çizge teorisi **·**  Tip teorisi **·**  Kategori teorisi **·**  Sayısal çözümleme **·**  Bilgi teorisi **·**  Kombinatorik **·**  Boole cebiri |  |
| Hesaplama teorisi | Otomat teorisi **·**  Hesaplanabilirlik teorisi **·**  Hesaplamalı karmaşıklık teorisi **·**  Kuantum hesaplama teorisi |
| Algoritmalar ve veri yapıları | Algoritma çözümlemesi **·**  Algoritma tasarımı **·**  Hesaplamalı geometri |
| Programlama dilleri ve derleyiciler | Ayrıştırıcılar **·**  Yorumlayıcılar **·**  Yordamsal programlama **·**  Nesne yönelimli programlama **·**  Fonksiyonel programlama **·**  Mantık programlama **·**  Programlama paradigmaları |
| Eşzamanlı, paralel ve dağıtık sistemler | Çoklu işleme **·**  Dağıtımlı hesaplama **·**  Eşzamanlılık denetimi |
| Yazılım mühendisliği | Gereksinim çözümleme **·**  Yazılım tasarımı **·**  Bilgisayar programlama **·**  Biçimsel yöntemler **·**  Yazılım testi **·**  Yazılım geliştirme süreci |
| Sistem mimarisi | Bilgisayar mimarisi **·**  Bilgisayar organizasyonu **·**  İşletim sistemi |
| Telekomünikasyon ve ağ oluşturma | Bilgisayar müziği **·**  Yönlendirme **·**  Örgü topolojisi **·**  Kriptografi |
| Veritabanları | Veritabanı yönetim sistemleri **·**  İlişkisel veritabanı **·**  SQL **·**  İşlem yürütme **·**  Veritabanı indeksleme **·**  Veri madenciliği **·**  Metadata (Üst veri) **·**  Ana veri (Master data) |
| Yapay zekâ | Otomatikleştirilmiş muhakeme **·**  Bilgisayarlı dilbilim **·**  Bilgisayarlı görü **·**  Evrimsel hesaplama **·**  Uzman sistemler **·**  Makine öğrenimi **·**  Doğal dil işleme **·**  Robotik |
| Bilgisayar grafikleri | Görselleştirme **·**  Bilgisayar animasyonu **·**  Görüntü işleme |
| İnsan-bilgisayar etkileşimi | Bilgisayar erişilebilirliği **·**  Kullanıcı arayüzleri **·**  Giyilebilir hesaplama **·**  Yaygın bilişim **·**  Sanal gerçeklik |
| Bilimsel hesaplama | Yapay yaşam **·**  Biyoenformatik **·**  Bilişsel bilim **·**  Bilgisayarlı kimya **·**  Hesaplamalı nörobilim **·**  Hesaplamalı fizik **·**  Sayısal algoritmalar **·**  Sembolik matematik |
| Bilgisayar bilimi, ACM Hesaplama ve Sınıflandırma Sistemi'ne göre farklı konu ve alanlara ayrılabilir. |