Sobes.tech
Junior — Middle

Ara bellek kullanmadan çalışan bir sıralama algoritması gerçekleştirmek mümkün müdür?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, ek ara bellek kullanmadan ara verileri depolayan sıralama algoritmaları vardır ve bunlara in-place algoritmaları denir.

Bunların örnekleri:

  • Kabarcık Sıralaması (Bubble Sort)
  • İçeriğe Göre Sıralama (Insertion Sort)
  • Seçim Sıralaması (Selection Sort)
  • Hızlı Sıralama (Quick Sort) — dikkatli uygulanması durumunda
  • Yığın Sıralaması (Heap Sort)

Bu algoritmalar, öğelerin sırasını doğrudan orijinal dizide değiştirir, kopyalar veya yardımcı yapılar için ek bellek ayırmaz.

Java'da in-place hızlı sıralama örneği:

public void quickSort(int[] arr, int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

private int partition(int[] arr, int low, int high) {
    int pivot = arr[high];
    int i = low - 1;
    for (int j = low; j < high; j++) {
        if (arr[j] <= pivot) {
            i++;
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    int temp = arr[i + 1];
    arr[i + 1] = arr[high];
    arr[high] = temp;
    return i + 1;
}

Bu şekilde, in-place sıralamalar bellek tasarrufu sağlar, ancak bazen ek bellek kullanan sıralamalara göre daha yavaş veya daha az kararlı olabilirler.