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
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


