Quick Sort, "Böl ve Fethet" (Divide and Conquer) paradigmasını kullanan hızlı ve verimli bir sıralama algoritmasıdır. Tony Hoare tarafından 1960 yılında geliştirilmiştir ve adını hızlı çalışmasından almıştır. ## Çalışma Prensibi: 1. **Pivot Seçimi**: Diziden bir "pivot" eleman seçilir. 2. **Bölme (Partitioning)**: Dizi, pivot etrafında yeniden düzenlenir: - Pivottan küçük elemanlar pivotun soluna - Pivottan büyük elemanlar pivotun sağına yerleştirilir 3. **Özyineleme (Recursion)**: Pivotun solundaki ve sağındaki alt diziler için aynı işlem özyinelemeli olarak tekrarlanır. 4. **Birleştirme**: Quick Sort'ta açık bir birleştirme adımı yoktur, alt diziler yerinde sıralanır. ## Önemli Özellikler: 1. **Yerinde Sıralama**: Genellikle ekstra O(log n) yığın belleği dışında ek bellek kullanmaz. 2. **Kararsız Sıralama**: Eşit değere sahip elemanların göreceli sırası korunmayabilir. 3. **Uyarlanabilir**: Pivot seçimine bağlı olarak özelleştirilebilir ve optimize edilebilir. 4. **Pratik Verimlilik**: Ortalama durumda O(n log n) zaman karmaşıklığı ile çoğu durumda diğer O(n log n) algoritmalardan daha hızlı çalışır.
1/**2 * Quick Sort implementation for JavaScript arrays3 * @param {Array} arr - The array to sort4 * @returns {Array} - A new sorted array5 */6function quickSort(arr) {7 const result = [...arr];8 9 const sort = (arr, low, high) => {10 if (low < high) {11 const pivotIndex = partition(arr, low, high);12 sort(arr, low, pivotIndex - 1);13 sort(arr, pivotIndex + 1, high);14 }15 };16 17 const partition = (arr, low, high) => {18 const pivot = arr[high];19 let i = low - 1;20 for (let j = low; j < high; j++) {21 if (arr[j] < pivot) {22 i++;23 [arr[i], arr[j]] = [arr[j], arr[i]];24 }25 }26 [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]];27 return i + 1;28 };29 30 sort(result, 0, result.length - 1);31 return result;32}Verdiğiniz dizi Quick Sort algoritması ile sıralanacaktır.
En İyi: O(n log n) | Ortalama: O(n log n) | En Kötü: O(n²)
O(log n) - Özyinelemeli çağrılar için bellek.
Quick Sort, pratik uygulamalarda genellikle en iyi performansı gösteren sıralama algoritmasıdır.