Sobes.tech
Junior — Middle

¿Es posible implementar un algoritmo de ordenamiento que no utilice memoria adicional para almacenar datos intermedios?

sobes.tech AI

Respuesta de la IA

Sí, existen algoritmos de ordenamiento que no utilizan memoria adicional para almacenar datos intermedios, y se llaman algoritmos in-place.

Ejemplos de estos algoritmos:

  • Ordenamiento de burbuja (Bubble Sort)
  • Ordenamiento por inserción (Insertion Sort)
  • Ordenamiento por selección (Selection Sort)
  • Ordenamiento rápido (Quick Sort) — con una implementación cuidadosa
  • Ordenamiento por montículo (Heap Sort)

Estos algoritmos cambian el orden de los elementos directamente en el array original, sin asignar memoria adicional para copias o estructuras auxiliares.

Ejemplo de ordenamiento rápido in-place en Java:

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

De esta forma, los ordenamientos in-place permiten ahorrar memoria, aunque a veces pueden ser menos rápidos o menos estables que los algoritmos que utilizan memoria adicional.