Está en la página 1de 3

Ordenamiento por Insercin

Concepto:
Dado un conjunto de n elementos (a1, a2,, an); el ordenamiento por
insercin consiste en encontrar una permutacin ordenada, bien sea en
sentido creciente o decreciente.
Se compara el segundo elemento con el primero y si verifica de acuerdo
a la condicin definida, cambia de posicin con el de la izquierda, sino se
mantiene en su posicion; luego se compara el siguiente elemento con
los de la izquierda; y as sucesivamente.

Ejemplo:

//Metodo de Insercion
#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
int mt[10][10],v[100];
int Ingresar_Dimension(){ int a;
do{
cout<<"Ingrese la dimension de la matriz: ";
cin>>a;
}
while(a<0 || a>10);
return a;
}
void Datos_Matriz(int a){

for(int i=0; i<a; i++){


for(int j=0; j<a; j++){
cout<<"mt["<<i+1<<"]["<<j+1<<"]=";cin>>mt[i][j];
}
}

void Impresion(int a){


for(int k=0; k<a; k++){
for(int j=0; j<a; j++){
printf("%4d",mt[k][j]);
}
cout<<endl;
}
}
void Inserccion (int a){
int aux;
int cont=0;
for(int i=0; i<a; i++){
for(int j=0; j<a; j++){
v[cont]=mt[i][j];
cont++;
}

for(int i=1; i<cont;i++){


aux=v[i];
for(int j=i; (j>0)&&(aux<v[j-1]); j--){
v[j]=v[j-1];
v[j-1]=aux;
}
}
int cont1=0;
for(int i=0; i<a; i++){
for(int j=0; j<a; j++){
mt[i][j]=v[cont1];
cont1++;
}
}
cout<<endl;
Impresion(a);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
n=Ingresar_Dimension();
Datos_Matriz(n);

cout<<"Matriz original: "<<endl;


Impresion(n);
cout<<"Ordenamiento por Inserccion: "<<endl;
Inserccion(n);
system("PAUSE");
return 0;
}

También podría gustarte