Ordenamiento por inserción – Algoritmos de ordenamiento

Publicado por Andrea Navarro en

El algoritmo de ordenamiento por inserción es un algoritmo de facil aplicación que permite el ordenamiento de una lista.

Su funcionamiento consiste en el recorrido por la lista seleccionando en cada iteración un valor como clave y compararlo con el resto insertándolo en el lugar correspondiente.

Estabilidad: Estable

Método: Inserción

Comparativo: Si

Uso de memoria: 1

Complejidad computacional:

Mejor caso: n

Caso promedio:ncuadrado

Peor caso:ncuadrado

Ordenamiento por inserción

Comenzamos con una lista de elementos no ordenados

Ordenamiento por inserción

 

Se selecciona el segundo valor como clave y se lo compara con los valores ubicados a su izquierda y se inserta en el lugar correspondiente

Ordenamiento por inserción

 

Se selecciona el siguiente número como clave y se repite el proceso para todos los valores anteriores

Ordenamiento por inserción

Ordenamiento por inserción

 

Se selecciona la siguiente clave

 

Ordenamiento por inserción

Ordenamiento por inserción

Ordenamiento por inserción

 

Finalmente se selecciona la última clave

Ordenamiento por inserción

Ordenamiento por inserción Ordenamiento por inserción Ordenamiento por inserción

 

Al finalizar el algoritmo tenemos como resultado la lista ordenado

Ordenamiento por inserción

Código en C

#include<stdio.h>

#define N 5

void mostrarLista(int*);
int main(int argc, char** argv){

	int arreglo[N]={5,2,4,1,3};

	int i,key,j;

   //Recorrer el arreglo
	for (i = 1; i < N; i++){
	   
		key = *(arreglo+i);
		j = i-1;

		//Comparar el valor selecionado con todos los valores anteriores
		while (j >= 0 && *(arreglo+j) > key){
			//Insertar el valor donde corresponda
			*(arreglo+j+1) = *(arreglo+j);
			j = j-1;
		}
		*(arreglo+j+1) = key;
		mostrarLista(arreglo);
	} 
   
	mostrarLista(arreglo);
  
	return 0;
}
//Función para mostrar estado de la lista
void mostrarLista(int *lista){
	int i;
	for (i=0; i< N; i++){
		printf("%d ",*(lista+i));
	}
	printf("\n");;
   
}

Código en PHP

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$arreglo[0]=5;
$arreglo[1]=2;
$arreglo[2]=4;
$arreglo[3]=1;
$arreglo[4]=3;

 
	$n=count($arreglo);
   //Recorrer el arreglo
   for ($i = 1; $i < $n; $i++)
   {
	   
       $key = $arreglo[$i];
       $j = $i-1;
       //Comparar el valor selecionado con todos los valores anteriores
       while ($j >= 0 && $arreglo[$j] > $key)
       {
		   //Insertar el valor donde corresponda
		   $arreglo[$j+1] = $arreglo[$j];
           $j = $j-1;
       }
       $arreglo[$j+1] = $key;
       mostrarLista($arreglo, $n);
   } 
   
   mostrarLista($arreglo, $n);
    
//Función para mostrar estado de la lista
function mostrarLista($lista, $lon)
{
   for ($i=0; $i< $lon; $i++)
   {
       echo $lista[$i]." ";
   }
   echo "<br />";
   
}

Espero que les sea de utilidad!


Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora