Vous êtes sur la page 1sur 6

INSERCION DIRECTA

Inicialmente se tiene un solo elemento, que obviamente es un


conjunto ordenado. Despus, cuando hay k elementos
ordenados de menor a mayor, se toma el elemento k+1 y se
compara con todos los elementos ya ordenados, detenindose
cuando se encuentra un elemento menor (todos los elementos
mayores han sido desplazados una posicin a la derecha) o
cuando ya no se encuentran elementos (todos los elementos
fueron desplazados y este es el ms pequeo). En este punto
se inserta el elemento k+1 debiendo desplazarse los dems
elementos
La idea central de este algoritmo consiste en insertar un
elemento de arreglo en la parte izquierda del mismo que ya se
encuentra
ordenada. Este
proceso se
repite desde
segundo hasta el
ensimo
elemento.
CODIGO DEL METODO INSERCION
DIRECTA

#include <iostream> Aqui


colocamos
#include <conio.h>include <windows.h> las librerias
//using namespace std;
void max_heapify(int *a, int i, int n) METODO
{
int j, temp; Inicializamos la variable en el vector
a en la posicin i
temp = a[i];
j = 2*i;
while (j <= n)
Comparacin que va
{ decrescendo desde la
if (j < n && a[j+1] > a[j]) posicin I

j = j+1; hasta que ese


Contador sea mayor a
if (temp > a[j]) 0 y ese nmero sea
break; menor al anterior
else if (temp <= a[j])
{
a[j/2] = a[j];
j = 2*j;
}
}
a[j/2] = temp;
return;
}
void heapsort(int *a, int n)
{
int i, temp;
for (i = n; i >= 2; i--)
{
temp = a[i];
a[i] = a[1];
a[1] = temp;
max_heapify(a, 1, i - 1);
}
}
void build_maxheap(int *a, int n)
{ Comparando el
int i; elemento anterior
a l y si encuentra
for(i = n/2; i >= 1; i--)
que es menor va a
{ desplazar cada uno
max_heapify(a, i, n); de los elementos
una posicin va a ir
} trabajando
} automticamente
hasta que quede
int main()
ordenado
{
int n, i, x;
cout<<"numero de elementos del arreglo : ";
cin>>n;
int a[20];
for (i = 1; i <= n; i++)
{
cout<<"Introduzca el elemento "<<(i)<<endl;
cin>>a[i];
Aqu se pide el elemento
} la cantidad que el
build_maxheap(a,n); usuario decida para
heapsort(a, n); luego ser ordenado

cout<<"Ordenado : ";
for (i = 1; i <= n; i++)
Aqu ya se
{ imprime
cout<<a[i]<<endl; getch(); cuando esta
} ordenado

return 0;
}
Al ejecutar el programa nos pide la cantidad
de elementos que deseamos para nuestro
arreglo
Luego nos pide que introduzcamos los
dichos elementos y bsicamente lo ordena
de forma inmediata

Vous aimerez peut-être aussi