İçeriğe geç
parazade

Big O Notasyonu Nedir?

İngilizce: Big O Notation

Yayın: · Son güncelleme:

Big O Notasyonu Nedir? Kısaca

Big O notasyonu, bir algoritmanın çalışma süresinin ya da bellek kullanımının girdi büyüdükçe nasıl arttığını ifade eden matematiksel gösterimdir. Algoritmaları donanımdan bağımsız biçimde karşılaştırmayı sağlar.

Big O Notasyonu nedir?
İçindekiler
  1. Big O notasyonu nedir?
  2. Nasıl okunur?
  3. Somut bir karşılaştırma
  4. Pratikte nasıl kullanılır?

Big O notasyonu nedir?

Big O notasyonu, bir algoritmanın veri miktarı arttıkça ne kadar yavaşladığını anlatan bir gösterimdir. Saniye cinsinden süre vermez, çünkü süre bilgisayara göre değişir. Bunun yerine büyüme biçimini anlatır: veri iki katına çıkınca iş de iki katına mı çıkıyor, yoksa dört katına mı?

Nasıl okunur?

Gösterimdeki n, girdinin boyutunu ifade eder. En sık karşılaşılan sınıflar şunlardır:

Gösterim Adı Örnek
O(1) Sabit Dizide belirli sıradaki elemana erişmek
O(log n) Logaritmik Sıralı listede ikili arama
O(n) Doğrusal Listede tek tek arama
O(n log n) Doğrusal logaritmik Birleştirmeli sıralama
O(n²) Karesel Kabarcık sıralaması

Big O genellikle en kötü durumu anlatır. Sabit çarpanlar ve küçük terimler göz ardı edilir; 3n + 5 adım süren bir işlem O(n) olarak yazılır.

Somut bir karşılaştırma

10.000 kişilik bir öğrenci listesinde iki farklı yöntem düşünün. O(n) bir algoritma kabaca 10.000 adım atar. O(n²) bir algoritma ise 100 milyon adıma ulaşır. Liste 100.000 kişiye çıktığında ilki 100.000 adıma, ikincisi 10 milyar adıma çıkar. Bu yüzden büyük veride algoritmanın sınıfı, donanımın hızından çok daha belirleyicidir.

Pratikte nasıl kullanılır?

Kodunuzu okurken iç içe döngüler arayın. Bir listeyi dolaşan döngünün içinde aynı listeyi tekrar dolaşan ikinci bir döngü varsa, büyük olasılıkla O(n²) bir yapı vardır. Bu konunun ayrıntıları zaman karmaşıklığı maddesinde ele alınır. Yazılım mülakatlarında hemen her algoritma sorusunun ardından "bunun Big O değeri nedir?" diye sorulduğunu da hesaba katın.

Sıkça Sorulan Sorular

Big O notasyonu neden önemlidir?

Bir kodun küçük veride hızlı çalışması, büyük veride de hızlı olacağı anlamına gelmez. Big O, veri büyüdüğünde ne olacağını önceden görmenizi sağlar.

O(1) ne demek?

O(1), işlemin süresinin girdi boyutundan bağımsız olduğunu gösterir. Bir dizinin belirli sıradaki elemanına erişmek buna örnektir.

İlgili terimler

Zaman Karmaşıklığı(Time Complexity)Zaman karmaşıklığı, bir algoritmanın girdi boyutu büyüdükçe kaç adım attığını, yani çalışma süresinin nasıl arttığını ölçen kavramdır. Genellikle Big O notasyonuyla ifade edilir.İkili Arama(Binary Search)İkili arama (binary search), sıralı bir listede aranan değeri her adımda listenin ortasındaki elemanla karşılaştırıp arama alanını yarıya indiren arama algoritmasıdır. Bir milyon elemanlı listede bile yaklaşık 20 adımda sonuca ulaşır.Sıralama Algoritmaları(Sorting Algorithms)Sıralama algoritmaları, bir listedeki elemanları küçükten büyüğe, alfabetik ya da başka bir ölçüte göre dizmek için kullanılan adım adım yöntemlerdir. Hız, bellek kullanımı ve kararlılık bakımından birbirinden ayrılırlar.Doğrusal Arama(Linear Search)Doğrusal arama (linear search), bir listedeki elemanları baştan başlayarak tek tek kontrol eden ve aranan değeri bulduğunda duran en basit arama yöntemidir. Liste sıralı olmasa da çalışır.LogLog, bir yazılımın ya da sistemin çalışırken gerçekleşen olayları tarih ve saatiyle kaydettiği kayıttır. Hataları bulmak, kullanıcı hareketlerini izlemek ve güvenlik olaylarını incelemek için kullanılır.Liste(List)Liste (list), programlamada birden fazla değeri sıralı tutan, eleman eklenip çıkarılabilen ve değiştirilebilen veri yapısıdır. Python'da köşeli parantezle yazılır: `meyveler = ["elma", "armut"]`.Döngü(Loop)Döngü (loop), programlamada bir kod bloğunu belirli sayıda ya da bir koşul sağlandığı sürece tekrar tekrar çalıştıran yapıdır. En yaygın türleri for ve while döngüleridir.