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) |