Sıralama Algoritmaları
Bubble Sort
- ➀ İki ardışık eleman karşılaştırılır. İlk eleman ikinci elemandan büyükse yer değiştirilir.
- ➁ Her yinelemenin sonunda, listedeki en büyük eleman listenin en sağına gider.
- ➂ Bir sonraki yineleme, listedeki son elemanı (örneğin, en büyük elemanı) hariç tutar.
Insertion Sort
- ➀ Listedeki bir eleman seçilir ve ters sırayla kendisinden önceki tüm elemanlarla karşılaştırılır.
- ➁ Eğer eleman karşılaştırılan elemandan küçükse, karşılaştırılan eleman sağa kaydırılır. Aksi takdirde eleman, karşılaştırılan elemanın yanına yerleştirilir.
Selection Sort
- ➀ Liste, en küçük elemanı bulmak için taranır.
- ➁ Her iterasyonun sonunda, bulunan en küçük eleman listenin ilk elemanıyla yer değiştirilir.
- ➂ Bir sonraki iterasyon, listedeki ilk elemanı (yani en küçük elemanı) hariç tutar.
Merge Sort
- ➀ Liste, iki eşit parçaya bölünür. Her bir parça, aynı fonksiyonu çağırarak bir özyinelemeye (recursion) girer.
- ➁ Özyineleme sonunda iki sıralı alt listeye sahip olması beklenir.
- ➂ İki sıralı alt liste birleştirilerek tam sıralı bir liste oluşturulur.
Quick Sort
- ➀ Bir pivot eleman seçilir ve listedeki uygun bir pozisyonda olup olmadığı kontrol edilir. Küçük elemanlar pivotun soluna, büyük elemanlar ise sağına yerleştirilir.
- ➁ Sol ve sağ alt listeler aynı işlemi özyineleme yoluyla yapar.
Counting Sort
- ➀ Liste, maksimum elemanı bulmak için taranır.
- ➁ Boyutu (maksimum eleman + 1) olan ve tüm elemanları 0 olan bir sayma listesi oluşturulur.
- ➂ Liste taranır ve sayma listesi uygun şekilde güncellenir.
- ➃ Sayımlara dayanarak liste sıralanır.
Radix Sort
- ➀ Listedeki maksimum değer bulunur. Kaç basamaklı olduğu tespit edilir.
- ➁ Birler basamağından başlayarak, onlar ve yüzler basamağı gibi, elemanlar ilgili basamaklardaki sıralı sayılara göre düzenlenir.
Bucket Sort
- ➀ İlk olarak bir kova listesi oluşturulur. Listedeki her kova, belirli bir aralıktaki elemanları içerebilir.
- ➁ Elemanlar kovalar arasında dağıtılır.
- ➂ Her kova ayrı ayrı sıralanır (başka bir sıralama tekniğiyle).
- ➃ Tüm kovaların elemanları toplanır.
Heap Sort
- ➀ Elemanlar, Min-Heap veya Max-Heap yapısında tutulur.
- ➁ Kök eleman, en sağdaki çocuk düğümle değiştirilir ve ardından heap'ten çıkarılır.
- ➂ Heap tekrar düzenlenir ve bu işlem heap boşalana kadar devam eder.
Shell Sort
- ➀ Insertion sort sıralama mekanizmasını kullanır. Ancak elemanları tek tek taramak yerine bir dizi kullanır.
- Örneğin bir dizi: N/2, N/4, N/8, burada N listenin boyutudur.
- ➁ Her iterasyondan sonra, belirli aralıklardaki (diziye göre) elemanlar sıralanır.
Zaman Karmaşıklığı
| Algoritma | En İyi Durum | Ortalama Durum | En Kötü Durum |
|---|---|---|---|
| Bubble Sort | O(n) | O(n²) | O(n²) |
| Selection Sort | O(n²) | O(n²) | O(n²) |
| Insertion Sort | O(n) | O(n²) | O(n²) |
| Merge Sort | O(n*logn) | O(n*logn) | O(n*logn) |
| Quick Sort | O(n*logn) | O(n*logn) | O(n²) |
| Counting Sort | O(n+k) | O(n+k) | O(n+k) |
| Radix Sort | O(n+k) | O(n+k) | O(n+k) |
| Bucket Sort | O(n+k) | O(n) | O(n²) |
| Heap Sort | O(n*logn) | O(n*logn) | O(n*logn) |
| Shell Sort | O(n*logn) | O(n*logn) | O(n²) |
Alan Karmaşıklığı
| Algoritma | Uzay Karmaşıklığı |
|---|---|
| ➀ Bubble Sort | O(1) |
| ➁ Selection Sort | O(1) |
| ➂ Insertion Sort | O(1) |
| ➃ Merge Sort | O(n) |
| ➄ Quick Sort | O(logn) |
| ➅ Counting Sort | O(max) |
| ➆ Radix Sort | O(max) |
| ➇ Bucket Sort | O(n+k) |
| ➈ Heap Sort | O(1) |
| ➉ Shell Sort | O(1) |