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

No hay comentarios :

Publicar un comentario