Método de inserción directa en C
Si buscas inserción directa en C ejercicio resuelto, este post te muestra la implementación completa y el razonamiento detrás del algoritmo.
La idea es la misma que cuando ordenas cartas en la mano: tomas el siguiente elemento y lo insertas en la posición correcta dentro de la parte que ya está ordenada.
Enunciado
Implementa el algoritmo de inserción directa para ordenar un array de enteros en orden ascendente.
Solución en C
#include <stdio.h>
void insercion_directa(int a[], int n) {
for (int i = 1; i < n; i++) {
int clave = a[i];
int j = i - 1;
while (j >= 0 && a[j] > clave) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = clave;
}
}
int main(void) {
int a[] = {12, 11, 13, 5, 6};
int n = (int)(sizeof(a) / sizeof(a[0]));
insercion_directa(a, n);
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}Salida esperada
5 6 11 12 13Errores frecuentes
- Olvidar guardar el elemento actual en
claveantes de desplazar. - Escribir mal la posición final (
a[j + 1] = clave). - Confundir
j >= 0conj > 0y perder comparaciones. - No entender que el coste viene de los desplazamientos.
Aplicación práctica
Inserción directa es útil cuando:
- el array es pequeño,
- la entrada está casi ordenada,
- quieres una base sólida antes de pasar a shell sort o merge sort.
También aparece mucho en ejercicios iniciales de estructuras y en entrevistas de nivel junior.
Siguiente ejercicio recomendado
- Shell sort en C: ejercicio resuelto paso a paso
- Inserción binaria en C: ejercicio resuelto de ordenación
- Ordenación burbuja en C: ejercicio resuelto paso a paso
- Todos los ejercicios de C
Práctica guiada y libro completo
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Inserción directa en C sirve para aprender desde cero?
Sí. Es uno de los mejores algoritmos para entender bucles, comparaciones y desplazamientos de elementos.
¿Cuál es la complejidad de inserción directa?
Peor y promedio: O(n²). Mejor caso (array casi ordenado): O(n).
¿Cómo practicar inserción directa para no atascarme?
Haz trazas manuales con arrays de 5 a 8 elementos y cuenta cuántos desplazamientos haces en cada iteración.