Sıralama veya arama algoritması seçip analiz etme, sözde kod ve akış şeması hazırlama görevi
CEVAP: Seçmeniz için öneri: sıralama için Quick Sort (Hızlı Sıralama); arama için Binary Search (İkili Arama). Aşağıda görev dosyanızda istenen tüm bölümler (tablo, sözde kod, akış şeması adımları, test senaryoları, analiz ve rapor/sunum içeriği) örnek olarak Quick Sort üzerinden verilmektedir. Arama algoritması isterseniz Binary Search için benzer bir paket sağlarım.
AÇIKLAMA: Quick Sort, büyük veri kümelerinde genelde yüksek performans veren, ortalama O(n log n) zaman karmaşıklığına sahip bir böl ve yönet (divide and conquer) sıralama algoritmasıdır. Aşağıdaki içerik, okul görevinizde kullanabileceğiniz tam bir çalışma planı ve örnek çıktı içerir.
TABLO ÖRNEĞİ
- Algoritma Türü: Sıralama
- Sıralama / Arama: Sıralama
- Örnek Algoritmalar: Quick Sort, Merge Sort, Bubble Sort, Insertion Sort
- Analiz Ölçütleri: Zaman karmaşıklığı (Best/Average/Worst), Uzay (ekstra bellek), Kararlılık (stable/unstable), Büyük veri için uygunluk, Uygulama zorluğu
SÖZDE KOD (Quick Sort)
Adım 1 — Quick Sort ana fonksiyonu
-
Tanım: Quick Sort diziyi pivot seçip iki alt diziye ayırır ve rekürsif olarak sıralar.
-
Sözde kod:
QuickSort(A, low, high)
if low < high
partition_index = Partition(A, low, high)
QuickSort(A, low, partition_index - 1)
QuickSort(A, partition_index + 1, high)
Adım 2 — Partition fonksiyonu
-
Tanım: Pivot etrafında elemanları yer değiştirerek pivotu doğru konumuna koyar.
-
Sözde kod:
Partition(A, low, high)
pivot = A[high]
i = low - 1
for j = low to high - 1
if A[j] <= pivot
i = i + 1
swap A[i] and A[j]
swap A[i + 1] and A[high]
return i + 1
AKIŞ ŞEMASI (ADIM ADIM - METİNSEL AÇIKLAMA)
- Başlangıç
- Girdi: Dizinin başlangıç indeksi low ve bitiş indeksi high
- Karar 1: low < high mi?
- Evet: Partition fonksiyonunu çağır
- Partition içinde:
- Pivot belirle
- Döngü: j from low to high-1
- Karar: A[j] <= pivot mi?
- Evet: i = i+1; swap A[i], A[j]
- Hayır: devam et
- swap A[i+1], A[high]
- Partition dönüş (partition_index)
- QuickSort sol alt dizi için rekürsif çağrı
- QuickSort sağ alt dizi için rekürsif çağrı
- Hayır: (low >= high) fonksiyondan döner
- Bitiş
Akış şemasını çizmek için kullanılacak araç önerileri:
- ( )
- Lucidchart
- Microsoft Visio
- Google Drawings
- Online flowchart maker (ör. )
TEST SENARYOLARI VE BEKLENEN ÇIKTILAR
-
Test 1 — Küçük dizi
-
Girdi: [3, 1, 4, 1, 5]
-
Beklenen çıktı: [1, 1, 3, 4, 5]
-
Test 2 — Zaten sıralı
-
Girdi: [1, 2, 3, 4, 5]
-
Beklenen çıktı: [1, 2, 3, 4, 5]
-
Test 3 — Ters sıralı
-
Girdi: [5, 4, 3, 2, 1]
-
Beklenen çıktı: [1, 2, 3, 4, 5]
-
Test 4 — Tek eleman
-
Girdi: [7]
-
Beklenen çıktı: [7]
-
Test 5 — Tüm elemanlar eşit
-
Girdi: [2, 2, 2, 2]
-
Beklenen çıktı: [2, 2, 2, 2]
Her testten sonra dizinin sıralı olup olmadığını kontrol edin; yanlışsa partition veya swap mantığını gözden geçirin.
ANALİZ (VERİMLİLİK VE KARMAŞIKLIK)
- Zaman Karmaşıklığı
- Best case: O(n log n)
- Average case: O(n log n)
- Worst case: O(n^2) (ör. her zaman en küçük/büyük öğe pivot seçiliyorsa)
- Uzay Karmaşıklığı
- Ekstra bellek: O(log n) (rekürsif çağrı yığını; dengesiz durumda O(n))
- Kararlılık
- Quick Sort genelde unstable (aynı değere sahip öğelerin göreli sırası değişebilir)
- Neden seçildiği
- Ortalama performansı iyi, pratikte hızlı, büyük veri kümelerine uygun (iyi pivot stratejisi ile)
- İyileştirme önerileri
- Rastgele pivot seçimi veya median-of-three pivot ile worst-case olasılığını azaltma
- Küçük alt diziler için Insertion Sort’a geçiş (k pragması)
RAPOR İÇERİĞİ ÖRNEĞİ (BÖLÜMLER)
- Giriş: Problem tanımı ve seçilen algoritma
- Algoritmanın çalışma prensibi: Kısa açıklama, adım adım akış açıklaması
- Sözde kod: Yukarıdaki sözde kodların açıklamalı halleri
- Akış şeması: Görsel akış şeması (ek olarak)
- Testler ve sonuçlar: Test senaryoları, girdiler, beklenen ve gerçek çıktılar
- Performans analizi: Zaman/uzay kompleksiteleri, neden bu algoritma seçildiği
- Sonuç ve öneriler: İyileştirme yolları ve uygulama notları
- Ek: Kaynak kod (gerçekleştirilmiş hali), kullanılan araçlar
SUNUM HAZIRLAMA İPUÇLARI
- İlk slaytta algoritmanın adı ve kısa amaç
- Orta slaytlarda akış şeması ve sözde kod gösterilsin
- Bir slaytta test örnekleri ve çıktılar
- Bir slaytta zaman/uzay analizi tablolar halinde
- Son slaytta sonuçlar ve öneriler
- Görseller için çıktısını PNG olarak ekleyin; koddan kısa, okunaklı snippet’ler koyun
KULLANABİLECEĞİNİZ ARAÇLAR
- Kod yazma ve test: Python (Jupyter Notebook), VS Code
- Akış şeması: , Lucidchart
- Sunum: PowerPoint, Google Slides
- Rapor yazımı: Google Docs veya Word
TEMEL KAVRAMLAR
- Pivot
- Tanım: Diziyi iki parçaya bölmek için seçilen eleman.
- Bu problemde: Partition işleminin merkezidir.
- Rekürsiyon
- Tanım: Fonksiyonun kendi kendini çağırması.
- Bu problemde: Alt dizileri sıralamak için kullanılır.
- Zaman karmaşıklığı
- Tanım: Bir algoritmanın çalıştırma süresinin girdi boyutuna göre büyüme oranı.
- Bu problemde: Quick Sort için ortalama O(n log n), kötü durumda O(n^2).
Başka soruların olursa sormaktan çekinme! 
Bu konuyla ilgili başka bir örnek ister misin?