inserción directa.docx

31
Universidad Centroamericana 30 de Abril del 2013 Inserción Directa Integrantes: Jorge Luis García. Roxana Salazar Taisigue. Darssy Fabiola López. Prof. Suni Pastrán Mendoza.

Upload: jorge-luis-garcia

Post on 11-Nov-2015

51 views

Category:

Documents


0 download

TRANSCRIPT

Insercin Directa

Universidad Centroamericana

Indice

Introduccin2Descripcin del Algoritmo3Implementacin4Clculo del Orden Algortmico.9Anlisis de Orden.11Simulacin del Algoritmo.14Anlisis Asinttico.15El Anlisis de Algoritmos y el Principio de Invarianza.15Qu es el Anlisis Asinttico de Algoritmos?16Descripcin del problema16Estudio de las Notaciones Asintticas17O Grande17 Omega17 Theta17Conclusiones18Anexos19Bibliografa25

Introduccin

El ordenamiento de los datos constituye un proceso muy comn no slo desde el punto de vista de la programacin, sino tambin en la vida real. A diario nos vamos a poder encontrar con innumerables casos en los cuales se hace necesaria la tarea de presentar un grupo mayor o menor de datos de forma ordenada con el fin de realizar sobre estos alguna accin. El ordenamiento puede ser de muchas formas Segn facilite la accin que se vaya a efectuar, puede ser por orden alfabtico (en el caso de que se trate de palabras), ascendente o descendente, agrupado, y dems. El proceso de ordenacin es uno de los mecanismos ms interesantes cuando llega el momento de mostrar que existen mltiples soluciones para un mismo problema, y que cada solucin algortmica tiene sus propias ventajas y desventajas. En este documento hablaremos acerca de un algoritmo en especfico Insercin Directa, es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones. Describiremos de qu trata este algoritmo, sus caractersticas, ventajas desventajas, orden de complejidad del mismo basado en el cdigo de insercin directa, descripcin de cuando se da el caso mejor, peor y caso promedio. Tambin analizaremos Una forma de medir la eficiencia de un algoritmo de esta clase, es verificar el nmero de comparaciones entre valores clave, adems del nmero de movimientos que se tengan que realizar entre elementos (intercambios) de la lista. Adicionalmente incluiremos la complejidad del algoritmo, la velocidad de ejecucin puede cambiar de acuerdo al tipo de dato a ordenar, es por ello que es conveniente comprar los algoritmos contra datos empricos. Estos datos empricos se deben elaborar tomando la media de tiempo de ejecucin en un conjunto de corridas y con datos del mismo tipo.La finalidad es de estudiar a cabalidad todo lo relacionado con el tema de insercin directa El objetivo en este trabajo es semejar todo lo relacionado acerca de este tema para poder tener un mejor entendimiento y asimilar una mayor comprensin.

Descripcin del AlgoritmoEl algoritmo de ordenacin por el mtodo de insercin directa es un algoritmo relativamente sencillo y se comporta razonablemente bien en gran cantidad de situaciones. Completa la tripleta de los algoritmos de ordenacin ms bsicos y de orden de complejidad cuadrtico, junto con SelectionSort y BubbleSort. 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 prcticos. Realiza una cantidad de comparaciones bastante equilibrada con respecto a los intercambios, y tiene un par de caractersticas que lo hacen aventajar a los otros dos en la mayor parte de las situaciones. (http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf)Este algoritmo se basa en hacer comparaciones, as que para que realice su trabajo de ordenacin son imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de comparacin, tal que dados dos elementos nos diga si estn en orden o no.Este mtodo toma cada elemento del arreglo para ser ordenado y lo compara con los que se encuentran en posiciones anteriores a la de l dentro del arreglo. Si resulta que el elemento con el que se est comparando es mayor que el elemento a ordenar, se recorre hacia la siguiente posicin superior. Si por el contrario, resulta que el elemento con el que se est comparando es menor que el elemento a ordenar, se detiene el proceso de comparacin pues se encontr que el elemento ya est ordenado y se coloca en su posicin (que es la siguiente a la del ltimo nmero con el que se compar). Estabilidad: Este algoritmo nunca intercambiaregistros conclaves iguales. Por lo tanto esestable.Requerimientos de Memoria: Una variable adicional para realizar los intercambios.Tiempo de Ejecucin: Para una lista denelementos el ciclo externo se ejecutan-1veces. El ciclo interno se ejecuta como mximo una vez en la primera iteracin, 2 veces en la segunda, 3 veces en la tercera, etc. Esto produce una complejidad O (n2).

1

Ventajas: Fcil implementacin. Requerimientos mnimos de memoria. Eficiente en pocos datos. Eficiente en datos que ya tiene cierta tendencia al orden. Estable no cambia el orden de los elementos iguales.

Desventajas: Lento. Realiza numerosas comparaciones. Este tambin es un algoritmo lento, pero puede ser de utilidad para listas que estn ordenadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos. Implementacin

#include #include #include #include #define n 100

using namespace std; void ordenamiento_insercion(int arreglo[]);void mostrar(int arreglo[]);

void aleatorio (int arreglo[]); //Promedio de los casosvoid invertir (int arreglo[]); //Peor de los Casosvoid semiordenado (int arreglo[]); //Mejor Caso

int main(int argc, char *argv[]){ int arreglo[n]; int CLOCKS_PERS_SEC; clock_t inicio, fin;

system ("color B1"); printf("Ordenamiento por insercion directa \n\n"); inicio = clock(); double tiempo; printf("ALEATORIO \n\n"); aleatorio(arreglo); mostrar(arreglo);

cout