0Pricing
C Academy · Lección

Ordenamiento de burbuja y por inserción

Ordenamientos sencillos

Ordenamiento de burbuja y por inserción es una lección gratuita de C Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.

Ordenamientos sencillos

La ordenación de burbuja y la ordenación por inserción son los dos algoritmos de ordenación por comparación más sencillos. Ambos tienen un coste O(n²) en el peor caso, pero son fáciles de entender y útiles para arreglos pequeños o casi ordenados.

Cómo funciona la ordenación de burbuja

La ordenación de burbuja recorre repetidamente el arreglo e intercambia los pares adyacentes que están desordenados. Después de cada pasada completa, el elemento más grande que queda sube hasta su posición final al final del arreglo.

Intercambiar dos enteros

Una función auxiliar de intercambio reutilizable mantiene limpio el código de ordenación.

#include <stdio.h>

void swap(int *a, int *b) {
    int t = *a; *a = *b; *b = t;
}

int main(void) {
    int x = 1, y = 2;
    swap(&x, &y);
    printf("%d %d\n", x, y);
    return 0;
}

Implementación de la ordenación de burbuja

Bucles anidados: el bucle externo cuenta las pasadas y el interno compara pares adyacentes y los intercambia. Después de la pasada i, los últimos i elementos están ordenados.

#include <stdio.h>

void bubble_sort(int a[], int n) {
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - 1 - i; j++)
            if (a[j] > a[j + 1]) {
                int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
            }
}

int main(void) {
    int a[] = {5, 2, 9, 1, 3};
    bubble_sort(a, 5);
    for (int i = 0; i < 5; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}

Optimización de salida anticipada

Si una pasada completa no realiza ningún intercambio, el arreglo ya está ordenado y puede detenerse. Esto hace que la ordenación de burbuja tenga un coste O(n) con una entrada ya ordenada.

#include <stdio.h>

void bubble_sort(int a[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int swapped = 0;
        for (int j = 0; j < n - 1 - i; j++)
            if (a[j] > a[j + 1]) {
                int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; swapped = 1;
            }
        if (!swapped) break;
    }
}

int main(void) {
    int a[] = {1, 2, 3, 4, 5};
    bubble_sort(a, 5);
    printf("sorted with early exit\n");
    return 0;
}

Cómo funciona la ordenación por inserción

La ordenación por inserción construye una región ordenada al principio. Para cada elemento nuevo, desplaza hacia la derecha los elementos ordenados más grandes y coloca el nuevo en su posición, como al ordenar cartas en la mano.

Implementación de la ordenación por inserción

Tome el elemento key = a[i], desplace una posición a la derecha cada elemento mayor de a[0..i-1] e inserte key en el espacio resultante.

#include <stdio.h>

void insertion_sort(int a[], int n) {
    for (int i = 1; i < n; i++) {
        int key = a[i];
        int j = i - 1;
        while (j >= 0 && a[j] > key) {
            a[j + 1] = a[j];
            j--;
        }
        a[j + 1] = key;
    }
}

int main(void) {
    int a[] = {5, 2, 9, 1, 3};
    insertion_sort(a, 5);
    for (int i = 0; i < 5; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}

Ordenación por inserción de datos casi ordenados

La ordenación por inserción destaca cuando el arreglo está casi ordenado: cada elemento se mueve solo unas pocas posiciones, acercándose a O(n). Por eso se utiliza como paso final en algoritmos de ordenación híbridos.

#include <stdio.h>

void insertion_sort(int a[], int n) {
    for (int i = 1; i < n; i++) {
        int key = a[i], j = i - 1;
        while (j >= 0 && a[j] > key) { a[j+1] = a[j]; j--; }
        a[j+1] = key;
    }
}

int main(void) {
    int a[] = {1, 2, 4, 3, 5}; /* one out of place */
    insertion_sort(a, 5);
    for (int i = 0; i < 5; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}

Estabilidad

Ambos algoritmos son estables: los elementos iguales conservan su orden relativo original, porque solo intercambian o desplazan elementos cuando se cumple una comparación estricta de mayor que. La estabilidad importa al ordenar registros usando varias claves.

Comparación de complejidad

Ambos tienen un coste medio y del peor caso de O(n²), pero difieren en la práctica:

  • Burbuja: muchos intercambios, rara vez se utiliza en código real
  • Inserción: menos escrituras, excelente para arreglos pequeños o casi ordenados

El mejor caso de ambos, con optimizaciones, es O(n).

Contar operaciones

Contemos las comparaciones que realiza la ordenación por inserción sobre un arreglo ordenado en orden inverso, el peor caso.

#include <stdio.h>

int main(void) {
    int a[] = {5, 4, 3, 2, 1};
    int n = 5; long cmp = 0;
    for (int i = 1; i < n; i++) {
        int key = a[i], j = i - 1;
        while (j >= 0 && (cmp++, a[j] > key)) { a[j+1] = a[j]; j--; }
        a[j+1] = key;
    }
    printf("comparisons = %ld\n", cmp);
    return 0;
}

Comprobación rápida

Compruebe su comprensión de los ordenamientos sencillos.

Resumen

Ha aprendido dos algoritmos de ordenación sencillos con coste O(n²).

  • La ordenación de burbuja intercambia pares adyacentes en cada pasada
  • La ordenación por inserción desplaza elementos y los inserta en una región ordenada al principio
  • Ambos son estables; con optimización, ambos alcanzan O(n) con entradas ordenadas
  • La ordenación por inserción es la mejor opción práctica para datos pequeños

Preguntas frecuentes

¿La lección «Ordenamiento de burbuja y por inserción» es gratis?

Sí — el texto completo de «Ordenamiento de burbuja y por inserción» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Ordenamiento de burbuja y por inserción»?

Ordenamientos sencillos Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Ordenamiento de burbuja y por inserción»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Ordenamiento de burbuja y por inserción
  2. Quicksort
  3. Mergesort
  4. Uso de qsort
← Volver a C Academy