Ordenamiento – Inserción

Enunciado

Este método consiste en insertar un elemento dado en la posición que le corresponde en relación a los elementos que están ubicadas antes. El proceso se repite del segundo al último elemento.

Código

Python

Video: Ordenamiento por Inserción

Video: Simulación

def insertion( v ):
   
    for i in range ( 1, len( v ) ):
       aux = v[ i ]
       j = i - 1
       while j>=0 and aux > v[ j ]:
           v[ j + 1 ] = v[ j ]
           j = j - 1

       v[ j + 1 ] = aux

def main():
    lista = [ 12, 18, 3, 22, 15, 48, 12 ]
    
    insertion( lista )
    print( lista )
    
    input( "Presionar/Press Enter to exit " )
main()

C++

#include <iostream>
#include <iomanip>
using namespace std ;
#include <conio.h>

void Insertion ( int n , float v[ ] )
{
   int i, j ; float aux ;

   for ( i = 1 ; i < n ; i++ )
   {
      aux = v[ i ] ; j = i - 1 ;
      while ( aux > v[ j ] && j >= 0 )
      {
      	v[ j + 1 ] = v[ j ] ;
        j = j - 1 ;
      }
      v[ j + 1 ] = aux ;
   }
}

int main()
{
   int  i ;
   float v1[ 10 ] ;

   cout << "Ingresar 5 numeros/" ;
   cout << "Enter 5 numbers: " << endl ;
   for ( i = 0 ; i < 5 ; i++)
      cin >> v1[ i ] ;

   Insertion( 5 , v1 ) ;

   cout << "Vector ordenado/" ;
   cout << "Ordered vector" << endl ;
   for ( i = 0 ; i < 5 ; i++ )
      cout << setw(8) << v1[ i ] << endl ;
	
   cout << endl ;
   cout << "Presionar/Press Enter to exit " ;
   getch() ;
   return 0 ;
}

Pascal

program prueba ;
uses crt ;
const n = 5 ;
type
    rango = 0..n ;
    vectorReal = array [ 0..n ] of real ;
var
    i : rango ;
    v1 : vectorReal ;
	
Procedure Insertion( n : rango ; var v : vectorReal ) ;
var i, j : rango ; aux : real ;
begin
    for i := 2 to n do
    begin
	aux := v[ i ] ; v[ 0 ] := aux ; j := i - 1 ;
        while aux > v[ j ] do
        begin
            v[ j + 1 ] := v[ j ] ;
            j := j - 1
        end ;
        v[ j + 1 ] := aux
    end
end ;

begin
    ClrScr ;
    write( 'Ingresar 5 numeros/' ) ;
    writeln( 'Enter 5 numbers: ' ) ;
    for i:=1 to n do
    begin
         readln( v1[ i ] ) ;
    end;
    writeln;

    Insertion( n , v1 ) ;
    write( 'Vector ordenado/' ) ;
    writeln( 'Ordered vector' ) ;
    for i:=1 to n do
        writeln( v1[ i ]:8:2 ) ;

    writeln ;
    writeln( 'Presionar/Press Enter to exit ' ) ;
    readln ;
end.

Diagramas