12 - Arama Algoritmaları
2025
Arama algoritması, bilgisayar bilimlerinde ve özellikle veri yapılarında, belirli bir öğeyi veya öğe grubunu bulmak amacıyla kullanılan bir algoritmadır.
Arama algoritmaları, veri içinde hızlı ve etkili bir şekilde istenilen bilgiyi bulmayı sağlar. Bu algoritmalar, verinin yapısına ve arama işlemine bağlı olarak çeşitli türlerde olabilir.
Arama algoritmalarının kullanım alanları:
Bu ders kapsamında 2 arama algoritmasını öğreneceğiz.
Bu algoritma, veri yapısındaki her öğeyi sırasıyla kontrol eder ve aranan öğeyi bulana kadar devam eder. En basit arama algoritmasıdır. Küçük veya sıralanmamış veri kümeleri için uygundur.
Aşağıdaki listede k = 1
elemanını aramak için aşağıdaki adımlar izlenir.
k
’yı her x
elemanı ile karşılaştırın.x == k
ise, indeksi döndürür.#include <stdio.h>
int search(int array[], int n, int x) {
for (int i = 0; i < n; i++)
if (array[i] == x)
return i;
return -1;
}
int main() {
int array[] = {2, 4, 0, 1, 9};
int x = 1;
int n = sizeof(array) / sizeof(array[0]);
int result = search(array, n, x);
(result == -1) ? printf("Element not found") : printf("Element found at index: %d", result);
}
İkili Arama, sıralanmış bir dizideki bir elemanın konumunu bulmak için kullanılan bir arama algoritmasıdır. Bu yaklaşımda, eleman her zaman bir dizinin bir bölümünün ortasında aranır.
⚠️ İkili arama yalnızca sıralanmış bir öğe listesi üzerinde uygulanabilir. Öğeler zaten sıralanmamışsa, önce onları sıralamamız gerekir.
İkili Arama Algoritması aşağıda tartışılan iki şekilde uygulanabilir.
Bu algoritma böl ve fethet yaklaşımıyla çalışır.
Her iki yöntem için genel adımlar aşağıda tartışılmıştır.
Aranacak eleman x = 4
olsun.
mid = arr[(low + high) / 2] = 6
.x == mid
ise, mid
değerini döndürün. Aksi takdirde, aranacak elemanı mid
ile karşılaştırın.x >
mid ise, x
’i mid
’in sağ tarafındaki elemanların ortadaki elemanı ile karşılaştırın. Bunu yapmak için low
değerini mid + 1
olarak ayarlayın: low = mid + 1
.x
’i mid
’in sol tarafındaki elemanların ortadaki elemanı ile karşılaştırın. Bunu yapmak için high
değerini mid - 1
olarak ayarlayın: high = mid - 1
.low
ve high
kesişene kadar tekrarlayın.x = 4
bulundu.#include <stdio.h>
int binarySearch(int array[], int x, int low, int high) {
if (high >= low) {
int mid = low + (high - low) / 2;
// If found at mid, then return it
if (array[mid] == x)
return mid;
// Search the left half
if (array[mid] > x)
return binarySearch(array, x, low, mid - 1);
// Search the right half
return binarySearch(array, x, mid + 1, high);
}
return -1;
}