Mostrando entradas con la etiqueta Insercion Directa. Mostrar todas las entradas
Mostrando entradas con la etiqueta Insercion Directa. Mostrar todas las entradas

miércoles, 27 de noviembre de 2013

Metodo de Ordenacion por Insercion Directa en C++

Hola amig@s en esta ocasión les traigo otro método de ordenación interna como lo es el de Inserción Directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones.

 Se basa en intentar construir una lista ordenada en el interior del array a ordenar.

 De estos tres algoritmos es el que mejor resultado da a efectos prácticos. Realiza una cantidad de comparaciones bastante equilibrada con respecto a los intercambios, y tiene un par de características que lo hacen aventajar a los otros dos en la mayor parte de las situaciones.

 Este algoritmo se basa en hacer comparaciones, así que para que realice su trabajo de ordenación son imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de comparación, tal que dados dos elementos nos diga si están en orden o no.


Imagen:


Código:

InsercionDirecta.cpp:

#include "InsercionDirecta.h" void main(){ InsercionDirecta ID; int n; do{cout<<"Cuantos elementos desea ingresar: ";cin>>n;}while(n<1||n>100); for(int i=0;i<n;i++){ cout<<endl<<"Dato["<<i+1<<"]: ";cin>>ID.vector[i]; } system("cls"); cout<<endl<<endl<<"Vector original:"<<endl<<endl; for(int i=0;i<n;i++){ cout<<ID.vector[i]<<" "; } ID.insercionDirecta(ID.vector,n); cout<<endl<<endl<<"Vector Ordenado Con Metodo de Insercion Directa:"<<endl<<endl; for(int i=0;i<n;i++){ cout<<ID.vector[i]<<" "; } system("pause>null"); }

InsercionDirecta.h

#include <iostream> #include <windows.h> using namespace std; class InsercionDirecta{ public: int vector[100],i,j; void insercionDirecta(int[], int ); void mostrar(int[], int ); }; void InsercionDirecta::insercionDirecta(int V[],int N){ int i,j,v; for (i = 1; i < N; i++){ v = V[i]; j = i - 1; while (j >= 0 && V[j] > v){ V[j + 1] = V[j]; j--; } V[j + 1] = v; } } void InsercionDirecta::mostrar(int V[],int N){ for(int i=0;i<N;i++){ cout<<V[i]<<" "; } }

Descarga el código fuente desde aquí.