Sobes.tech
Junior — Middle

Da li je moguće implementirati algoritam sortiranja koji ne koristi dodatnu memoriju za čuvanje međuzavisnih podataka?

sobes.tech АИ

Одговор од АИ

Da, postoje algoritmi za sortiranje koji ne koriste dodatnu memoriju za skladištenje međuzavisnih podataka — oni se nazivaju in-place algoritmi.

Primeri takvih algoritama:

  • Bubble Sort (Sortiranje mehurićem)
  • Insertion Sort (Sortiranje umetkom)
  • Selection Sort (Sortiranje izborom)
  • Quick Sort (Brzo sortiranje) — uz pažljivu implementaciju
  • Heap Sort (Sortiranje pomoću hrpe)

Ovi algoritmi menjaju redosled elemenata direktno u originalnom nizu, bez alociranja dodatne memorije za kopije ili pomoćne strukture.

Primer in-place brzog sortiranja u Javi:

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;
}

Ovim in-place sortiranjem štedi memoriju, ali ponekad može biti sporije ili manje stabilno od onih koji koriste dodatnu memoriju.