Consiste en lo siguiente:
- Buscas el elemento más pequeño de la lista.
- Lo intercambias con el elemento ubicado en la primera posición de la lista.
- Buscas el segundo elemento más pequeño de la lista.
- Lo intercambias con el elemento que ocupa la segunda posición en la lista.
- Repites este proceso hasta que hayas ordenado toda la lista.
Pseudocódigo en C++
Ejemplo:
Código en C++
#include <iostream>
#include <time.h>//librería ara usar random
#define TAM 10 //se
define una variable global
int main()
{
//declaración de las variables a utilizar
// temp:para
almacenar temporalmente un número
// lista:los
elementos a ordenar
// TAM:tamaño de
la lista
// i, j:para usarse en los ciclos
int temp, i, j;
int lista[TAM];
srand(time(NULL));
//llenar vector con valores aleatorios
for (i = 0; i < TAM; i++)
{
lista[i] = rand() % 100;//generación de números aleatorios
}
//imprimir arreglo desordenado, \n para el salto de línea
printf("Vector desordenado\n");
for (i = 0; i < TAM; i++)
{
printf("%d\t", lista[i]);//\t da la tabulación o con \n para
salto de línea
}
//ciclos anidados para ordenar los elementos con
inserción
for (i = 1; i < TAM; i++)
{
temp = lista[i];//se almacena el número en temp
j = i - 1;//asignamos a j el valor de i menos 1 para comparar con el
elemento anterior
while ((lista[j] > temp) && (j >= 0))//mientras los elementos sean mayores a temp y todavía tengamos
elementos
{
lista[j + 1] = lista[j];//al ser mayor lo almacenamos en la posición j+1
j--;//decrementamos
j
lista[j + 1] = temp;//almacenamos temporal en j+1
}
}
//imprimir vector ordenado
printf("\n");
printf("Vector ordenado\n");
for (int i = 0; i < TAM; i++)
{
printf("%d\t", lista[i]);//\t da la tabulación o con \n para
salto de línea
}
//detener la pantalla pidiendo un caracter de entrada
int flag = getchar();
}
Ventajas:
- Fácil implementación.
- Requerimientos mínimos de memoria.
Desventajas:
- Lento.
- Realiza numerosas comparaciones.