Sobes.tech
Junior — Middle

Je možné implementovať triediaci algoritmus, ktorý nevyužíva dodatočú pamäť na uloženie medzičasových údajov?

sobes.tech AI

Odpoveď od AI

Áno, existujú algoritmy triedenia, ktoré nevyužívajú dodatočnú pamäť na uloženie medzičasových údajov — nazývajú sa in-place algoritmy.

Príklady takýchto algoritmov:

  • Bubble Sort (Bublinkové triedenie)
  • Insertion Sort (Vkladacie triedenie)
  • Selection Sort (Výberové triedenie)
  • Quick Sort (Rýchle triedenie) — pri starostlivej implementácii
  • Heap Sort (Hranové triedenie)

Tieto algoritmy menia poradie prvkov priamo v pôvodnom poli, bez pridelenia dodatočej pamäti na kópie alebo pomocné štruktúry.

Príklad in-place rýchleho triedenia v Jave:

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

Týmto spôsobom in-place triedenie umožňuje šetriť pamäť, ale niekedy môže byť pomalšie alebo menej stabilné ako tie, ktoré používajú dodatočnú pamäť.