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
- Ordenamiento de burbuja y por inserción
- Quicksort
- Mergesort
- Uso de qsort