Temel Algoritmalar: Sıralama ve Arama Adım Adım Örnekler

Temel Algoritmalar

Temel Algoritmalar: Sıralama ve Arama Adım Adım Örnekler

Temel Algoritmalar
5 dk okuma süresi
Bu makale Bubble Sort ve Binary Search algoritmalarını adım adım örneklerle, temel zaman/alan karmaşıklıkları ve pratik uygulama ipuçlarıyla açıklar.
Temel Algoritmalar: Sıralama ve Arama Adım Adım Örnekler

Giriş

Algoritmalar, veri yapılarıyla birlikte bilgisayar biliminin temel taşlarından biridir. Bu yazıda iki temel konuyu ele alacağız: sıralama (Sorting) ve arama (Searching). Amacımız, hem kavramsal tanımları hem de adım adım örnekleri göstererek bu iki işlemin nasıl çalıştığını ve hangi durumlarda hangi yöntemlerin daha uygun olduğunu anlamanızı sağlamak.

Neden sıralama ve arama önemli?

Sıralama ve arama işlemleri, veriye erişimi ve veri üzerinde işlemler yapmayı kolaylaştırır. İyi seçilmiş bir arama veya sıralama yöntemi, uygulama performansını büyük ölçüde etkileyebilir. Genel açıklamalar ve örnekler için kaynaklardan birine bakabilirsiniz: Algoritmalar İnteraktif Öğrenme Platformu — Tüm Algoritmalar (kaynak olarak kullanıldı).

Bubble Sort: Tanım ve Adım Adım Örnek

Bubble Sort, komşu elemanları karşılaştırıp gerekirse yer değiştirerek çalışan basit bir sıralama algoritmasıdır. Eğitim amaçlı sıkça gösterilir ve bazı durumlarda (küçük veya kısmen sıralı diziler) kolay uygulanabilir. Daha ayrıntılı teknik açıklamalar için bkz. Sıralama Algoritmaları.

Adım adım örnek

Başlangıç dizimiz: [5, 1, 4, 2, 8]

  1. Pass 1: Karşılaştırmalar ve olası takaslar
    • 5 ve 1 karşılaştırılır → yer değişir ⇒ [1, 5, 4, 2, 8]
    • 5 ve 4 karşılaştırılır → yer değişir ⇒ [1, 4, 5, 2, 8]
    • 5 ve 2 karşılaştırılır → yer değişir ⇒ [1, 4, 2, 5, 8]
    • 5 ve 8 karşılaştırılır → değişim gerekmez ⇒ [1, 4, 2, 5, 8]
  2. Pass 2:
    • 1 ve 4 karşılaştırılır → değişim yok ⇒ [1, 4, 2, 5, 8]
    • 4 ve 2 karşılaştırılır → yer değişir ⇒ [1, 2, 4, 5, 8]
    • 4 ve 5 karşılaştırılır → değişim yok ⇒ [1, 2, 4, 5, 8]
  3. Pass 3: Karşılaştırmalar sonucunda dizi zaten sıralıdır, daha fazla değişim olmaz.
Adım Dizi Durumu
Başlangıç [5, 1, 4, 2, 8]
Pass 1 Sonu [1, 4, 2, 5, 8]
Pass 2 Sonu [1, 2, 4, 5, 8]
Pass 3 Sonu [1, 2, 4, 5, 8] (sıralı)

Temel çalışma adımları (pseudocode açıklama)

  1. Döngüyü dizinin uzunluğu kadar dışarıdan başlatın.
  2. Her tekrar içinde komşu eleman çiftlerini soldan sağa karşılaştırın.
  3. Eğer ilk eleman ikinciden büyükse, yer değiştirin.
  4. Eğer bir geçişte hiç değişim olmadıysa döngüyü bitirin (optimizasyon).

Bubble Sort'un zaman ve alan karmaşıklıkları ile ilgili detaylı teknik notlar için kaynakta verilen analizlere bakabilirsiniz; genel olarak en iyi durum O(n), ortalama ve en kötü durum O(n²)Kaynak: Sorting Algorithms - Serkan Kulcu).

Binary Search: Tanım ve Adım Adım Örnek

Binary Search (ikiye bölerek arama), yalnızca sıralı diziler üzerinde çalışır. Her adımda arama aralığını yarıya indirerek hedef değeri bulmaya çalışır. Klasik tanımı ve kullanım bağlamı için bkz. Algoritmalar İnteraktif Öğrenme Platformu — Arama Algoritmaları.

Adım adım örnek

Sıralı dizi: [1, 2, 3, 4, 5, 6, 7, 8, 9], aranan: 6

Adım low high mid arr[mid] Aksiyon
1 0 8 4 5 5 < 6 ⇒ low = mid + 1 (5)
2 5 8 6 7 7 > 6 ⇒ high = mid - 1 (5)
3 5 5 5 6 arr[mid] == target ⇒ bulundu

Pseudocode açıklama

  1. low = 0, high = n-1 olarak başla.
  2. while low ≤ high ise mid = floor((low + high) / 2) hesapla.
  3. eğer arr[mid] == target ise bulunan indeksi döndür.
  4. eğer arr[mid] < target ise low = mid + 1; değilse high = mid - 1.
  5. Aralık boşalırsa hedef bulunamaz.

Binary Search'ün zaman karmaşıklığı tipik olarak O(log n)'dir; bu davranışla ilgili teknik referanslar için bkz. Serkan Kulcu - Sorting/Searching Notları.

Karmaşıklıklar ve Karşılaştırma

Algoritma Zaman Karmaşıklığı Alan (Space) Kullanım Durumu
Bubble Sort En iyi: O(n), Ortalama/En kötü: O(n²) O(1) (in-place) Küçük diziler, eğitim; genelde büyük veri için tercih edilmez
Binary Search En iyi/Ortalama/En kötü: O(log n) O(1) iteratif (özyinelemeli ise O(log n) ek yığın) Sıralı dizilerde hızlı arama

Genel kural: arama yapılmadan önce veri sıralı değilse önce uygulanacak sıralama yöntemi ile birlikte değerlendirme yapılmalıdır; büyük veri setlerinde genelde QuickSort veya MergeSort gibi daha etkili sıralama yöntemleri tercih edilir (daha fazla teknik bilgi için Sıralama Algoritmaları kaynağına bakın).

Uygulama İpuçları ve Kontrol Listesi

  • Binary Search için: Dizi kesinlikle sıralı olmalıdır; aksi halde sonuçlar güvenilir olmaz.
  • mid hesaplamasında taşma riskini önlemek için bazı dillerde mid = low + (high - low) / 2 kullanın.
  • Recursive (özyinelemeli) binary search yazıyorsanız yığın derinliğini göz önünde bulundurun; iteratif çözümler genellikle daha az bellek kullanır.
  • Bubble Sort için: Eğer bir geçişte hiç swap gerçekleşmezse döngüyü bitiren bir kontrol eklemek en iyi durumu O(n) yapar.
  • Sıralama kararlılığı (stability) önemliyse, hangi algoritmanın stabil olduğunu kontrol edin; örneğin Bubble Sort stabil bir sıralama sağlar (kaynak: Sıralama Algoritmaları).
  • Büyük veri setleri için zaman karmaşıklığına öncelik verin; O(n²) algoritmalar ölçeklendirme açısından dezavantajlıdır.
  • Her zaman uç durumları test edin: boş dizi, bir elemanlı dizi, tekrar eden elemanlar, hedefin olmadığı durumlar.

Hangi Durumda Hangi Algoritma?

  • Hızlı arama yapılacak ve veri zaten sıralıysa → Binary Search uygundur.
  • Öğrenme, görselleştirme veya çok küçük diziler için → Bubble Sort ile başlayabilirsiniz.
  • Büyük veri setleri veya üretim ortamı için → daha verimli sıralama algoritmalarını (ör. QuickSort/MergeSort) tercih edin ve karmaşıklık analizine bakın (detaylar için kaynak).

Sonuç

Bubble Sort ve Binary Search, bilgisayar biliminin giriş seviyesinde öğretilen, ancak temel kavramları oturtmak için çok yararlı iki yöntemdir. Bubble Sort basit bir sıralama tekniği, Binary Search ise sıralı veri üzerinde hızlı arama sağlar. Karmaşıklık ve uygulama koşullarını göz önünde bulundurarak doğru araçları seçmek başarılı uygulama geliştirme için kritiktir. Daha derin teknik detay ve karşılaştırmalar için kullanılan kaynaklara bakabilirsiniz: Sıralama Algoritmaları, Tüm Algoritmalar ve Serkan Kulcu - Sorting.