· Algoritmalar · Tahmini okuma süresi: 1 dakika
Algoritma Karmaşıklığı ve Performans Analizi
Algoritmaların çalışma süresi ve bellek kullanımı gibi performans kriterlerinin değerlendirilmesi.
Algoritma Karmaşıklığı Nedir?
Algoritma karmaşıklığı, algoritmanın ne kadar kaynak (zaman, bellek) kullandığını ifade eder. Yazılımda performansı ölçmek ve iyileştirmek için temel göstergedir.
Zaman Karmaşıklığı (Time Complexity)
Bir algoritmanın çalışma süresinin, girdi büyüklüğüne göre nasıl değiştiğini gösterir. Genellikle Big-O notasyonu ile ifade edilir:
- O(1): Sabit zaman — girdi boyutundan bağımsız.
- O(log n): Logaritmik zaman — örneğin binary search.
- O(n): Doğrusal zaman — her elemanı bir kere kontrol eder.
- O(n log n): Log-linear — çoğu etkili sıralama algoritması.
- O(n²): Kare zaman — nested döngülerde sık görülür.
Uzay Karmaşıklığı (Space Complexity)
Algoritmanın çalışma sırasında kullandığı ek bellek miktarını gösterir.
Karmaşıklık Analizi Örnekleri
1. Doğrusal Arama (Linear Search)
Elemanları tek tek kontrol eder.
Zaman karmaşıklığı: O(n)
2. İkili Arama (Binary Search)
Sıralı dizide ortadan bölerek arama yapar.
Zaman karmaşıklığı: O(log n)
3. Bubble Sort
Her elemanı diğerleriyle karşılaştırır.
Zaman karmaşıklığı: O(n²)
Big-O Notasyonu Detayları
Big-O, algoritmanın en kötü durum performansını belirtir. Örneğin:
- O(1): En hızlı ve ideal.
- O(n): Girdi büyüdükçe performans doğrusal olarak düşer.
- O(n²): Girdi arttıkça performans hızla düşer.
Örnek Kod: Linear Search (JavaScript)
function linearSearch(arr, target) {
for(let i = 0; i < arr.length; i++) {
if(arr[i] === target) return i;
}
return -1;
}