Algoritma
- İngilizcesi
- Algorithm
- Okunuşu
- elgıridım
Kısaca
Algoritma, bir listeyi sıralamak ya da en kısa yolu bulmak gibi bir sorunu çözmek veya bir işi tamamlamak için izlenen, sonlu ve adım adım yönergeler bütünüdür.
Algoritma nedir?
Algoritma, bir girdiyi istenen bir çıktıya dönüştürmek için hazırlanmış kesin bir tariftir. Her adımı, onu izleyen herkesin ya da herhangi bir bilgisayarın aynı sonuca ulaşacağı kadar açık biçimde belirtir. Algoritmalar programlama dillerinden bağımsızdır: aynı algoritma Python'da, JavaScript'te ya da kâğıt üzerinde yazılabilir.
Yemek tarifi, algoritma için günlük hayattan iyi bir benzetmedir. Tarif malzemeleri (girdi) sıralar, sıralı adımları verir ve hazır bir yemekle (çıktı) biter. Yazılımda bilinen örnekler arasında, sıralı bir listeyi sürekli ikiye bölerek içindeki bir öğeyi bulan ikili arama (binary search) ile Array.prototype.sort gibi işlevlerin arkasındaki sıralama algoritmaları yer alır.
Farklı algoritmalar aynı sorunu çok farklı verimlilikte çözebilir. Geliştiriciler bunları, girdi büyüdükçe çalışma süresinin ya da bellek kullanımının nasıl arttığını anlatan Big O gösterimiyle karşılaştırır. Örneğin bir listedeki her öğeyi tek tek denetlemek O(n), ikili arama ise O(log n) karmaşıklığındadır; büyük listelerde ikincisi çok daha hızlıdır.
Algoritma, program ile aynı şey değildir. Algoritma fikirdir, yani mantıksal adım dizisidir; program ise bir ya da birkaç algoritmanın belirli bir dilde, çalışması için gereken her şeyle birlikte somut hâle getirilmiş uygulamasıdır.
Bir bakışta
Önemli noktalar
- Algoritma, bir girdiyi çıktıya dönüştüren sonlu ve sıralı adımlar bütünüdür.
- Dilden bağımsızdır; kod onu ifade etmenin yalnızca bir yoludur.
- Verimlilik, zaman ve bellek için Big O gösterimiyle anlatılır.
- Klasik örnekler arasında arama, sıralama ve en kısa yol algoritmaları vardır.
Örnek
// Find target in a sorted array; return its index or -1
function binarySearch(sorted, target) {
let low = 0;
let high = sorted.length - 1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
if (sorted[mid] === target) return mid; // found it
if (sorted[mid] < target) low = mid + 1; // search the right half
else high = mid - 1; // search the left half
}
return -1; // not found
}
binarySearch([2, 5, 8, 12, 16], 12); // 3Sık sorulan sorular
Algoritma ile program arasındaki fark nedir?
Algoritma, bir sorunu çözmek için izlenen soyut adım dizisidir. Program ise bu algoritmanın, genellikle başka birçok algoritmayla birlikte, bir bilgisayarın çalıştırabilmesi için belirli bir programlama dilinde yazılmış somut uygulamasıdır.
Big O gösterimi nedir?
Big O gösterimi, girdi boyutu büyüdükçe bir algoritmanın çalışma süresinin ya da bellek kullanımının nasıl arttığını anlatır. Örneğin O(n), işin girdiyle doğru orantılı büyüdüğü anlamına gelir; O(1) ise girdi ne kadar büyük olursa olsun işin aynı kaldığını gösterir.
Yazılımcı olmak için algoritma bilmem gerekir mi?
Her algoritmayı ezberlemeniz gerekmez; ancak arama ve sıralama gibi yaygın olanları anlamak ve verimliliği değerlendirmeyi bilmek daha hızlı kod yazmanıza yardımcı olur. Algoritma soruları teknik mülakatlarda da sık karşınıza çıkar.
İlgili sayfalar
- FonksiyonProgramlamanın Temelleri, s. 20Fonksiyon, belirli bir işi yapan, isteğe bağlı olarak parametre denen girdiler alıp sonuç döndürebilen, adlandırılmış ve yeniden kullanılabilir kod bloğudur.
- ÖzyinelemeProgramlamanın Temelleri, s. 42Özyineleme, bir fonksiyonun sorunu, basit bir temel duruma ulaşana dek aynı sorunun daha küçük sürümleri için kendisini çağırarak çözdüğü tekniktir.
- DeğişkenProgramlamanın Temelleri, s. 10Değişken, bir programda sayı ya da metin gibi bir değeri tutan ve kodun çalışırken okuyup değiştirebildiği, adlandırılmış bir depolama alanıdır.
- Big O gösterimiProgramlamanın Temelleri, s. 4Big O gösterimi, girdi büyüdükçe bir algoritmanın çalışma süresinin ya da bellek kullanımının nasıl arttığını, kesin hız yerine büyüme oranıyla anlatır.
- Tasarım DeseniYazılım Mimarisi, s. 42Tasarım deseni, yazılım tasarımında sık görülen bir soruna kanıtlanmış, yeniden kullanılabilir çözümdür; hazır kod değil, genel bir şablon olarak anlatılır.
- Makine ÖğrenmesiYapay Zekâ ve Makine Öğrenmesi, s. 30Makine öğrenmesi, bilgisayarların elle yazılmış kurallar yerine verilerdeki örüntüleri öğrenerek tahmin yaptığı bir yapay zekâ dalıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin