METODOS DE ORDENAMIENTO

3.476 visualizaciones

Publicado el

0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
3.476
En SlideShare
0
De insertados
0
Número de insertados
17
Acciones
Compartido
0
Descargas
84
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

METODOS DE ORDENAMIENTO

  1. 1. INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO MATERIA: UNIDAD I: INFORME TECNICOUNIDAD V: METODOS DE ORDENAMIENTO.DOCENTE ALUMNO: SEMESTRE: III GRUPO: B AULA: J-4 LUNES 10 de DICIEMBRE del año 2012
  2. 2. INTRODUCCIÓNEn el presente informe técnico presento el código de tres métodos deordenamiento de datos. Cada uno con características propias. Son tres métodosque se utilizan para poder dar un orden a cierto grupo de datos que se encuentrenalmacenados dentro de un arreglo. Existen varios autores que se contradicensobre cual de todos los métodos de ordenamiento es el mas rápido y sencillo derealizar. En la actualidad la mayoría coincide en que el método denominadoQuicksort es uno de los rápidos y sencillos de realizar, pues esta basado en latécnica llamada “divide y vencerás”.Las características de funcionamiento de cada método esta especificado en loscomentarios que encontrara enseguida del código de cada método.Cabe mencionar que solo hare referencia a tres métodos de ordenamiento, loscuales serán, el método Burbuja, el método QuickSort, -ya entes mencionado-, y elmétodo Shell. Solo abordare estos tres ya que son estos los más utilizados para laorganización de datos dentro de arreglos.Un punto importante a tomar en cuenta es que se presentara dos programas, en elprimero se presenta dos de los métodos a los que se hace mención burbuja yShell, tendrá un menú con el que el usuario podrá decidir con que método deseaque se ordene su información. Pero eso si, cada método de ordenamiento estadefinido por un función al que se le llama dentro del programa principal. Elsegundo programa presentara el método Quicksort, que debido a la forma de suestructura se creo de manera independiente.Todo lo anterior lo podrá observar con más detalle al estar frente al código que sepresenta en este trabajo
  3. 3. METODO BURBUJA Y METODO SHELL#include <iostream>using namespace std;int array[5];void ingresar();void imprimir();void ordenamiento_burbuja();void ordenamiento_shell();void menu();int i, j, op;void intercambio(int a, int b);int main(int argc, char *argv[]) { do{ menu(); switch(op){ case 1: ingresar(); cout<<"original: "; imprimir(); ordenamiento_burbuja(); cout<<"ordenado: "; imprimir(); break; case 2: ingresar(); cout<<"original: "; imprimir(); ordenamiento_shell(); cout<<"ordenado: "; imprimir(); break; case 3: cout<<"FIN DE EJECUCION"; } }while(op<3); return 0;}void menu(){ cout<<"====== MENU METODOS DE ORDENAMIENTO =======n"; cout<<"1)Burbujan"<<"2)Shelln"<<"3)Salirn"; cout<<"Que Metodo Desea Utilizar: "; cin>>op;}
  4. 4. void ingresar(){ for(i=0;i<5;i++){ cout<<"Escriba el dato: "; cin>>array[i]; } cout<<"n";}void imprimir(){ for(i=0;i<5;i++){ cout<<array[i]; } cout<<"n";}void ordenamiento_burbuja(){ for(i=0; i<5; i++){ for(j=0; j<5; j++){ if(array[j]>array[i]) intercambio(i,j); } } cout<<"n";}void intercambio(int a, int b){ int aux; aux=array[a]; array[a]=array[b]; array[b]=aux;}void ordenamiento_shell(){ int intervalo,k; intervalo = 5 / 2; while (intervalo > 0) { for (i = intervalo; i < 5; i++) { j = i - intervalo; while (j >= 0){ k = j + intervalo; if (array[j] <= array[k]) j = -1; else { double temp; temp = array[j];
  5. 5. array[j] = array[k]; array[k] = temp; j -= intervalo; } } } intervalo = intervalo / 2; }}COMENTARIO: Este programa presenta dos métodos de ordenamiento. Peroprimero se crea un arreglo que consta de 5 datos que el usuario ingresa, con basea estos cinco elementos que se ingresan al azar, se prueban lo métodos deordenamiento que en este caso son el método burbuja y el método Shell. Para queel usuario elija con que método desea ordenar el arreglo, se creo un menú. Elprimer método (burbuja), consiste en ordenar los datos de manera secuencial,tomando en cuanta el primer dato, si se haya un valor mas pequeño se realiza uncambio de posición, sucesivamente hasta ordenar por completo. En cuanto alShell, divide el arreglo en dos parte y toma un valor central para evaluar cada sub-arreglo y de esta forma ordenar los datos. Al final el usuario decide que métodoutilizar después de ingresar sus 5 datos, se imprime el orden en el que ingreso losdatos para demostrar que realmente se ordenan los datos por medio de estosmétodos.Para realizar las operaciones tanto de los ordenamiento, como el de ingresar eimprimir los valores, además de una función menú, se utilizaron funciones, a loscuales solo se tuvo que invocar dentro de la función principal main, que utiliza unswitch case para dar la opción de elegir las acciones que el usuario desea realizardentro del programa. Además la función del método burbuja utilizo una funciónauxiliar el cual se llamo intercambio, como se puede observar en el código.
  6. 6. METODO QUICKSORT#include <iostream>using namespace std;void quicksort(int edad[],int izq, int der );void imprimir(int cant,int n[]);void ingresar(int cant,int n[]);int main(int argc, char *argv[]) { int edad[20],n; do{ cout<<"Cantidad de numeros a ingresar: "; cin>>n; }while(n<=0); ingresar(n,edad); quicksort(edad,0,n-1); imprimir(n,edad); return 0;}void quicksort(int edad[],int izq, int der ){ int i, j, pivote , aux; i = izq; j = der; pivote = edad[ (izq + der) /2 ]; do{ while(edad[i] < pivote) i++; while(pivote < edad[j]) j--; if( i <= j ){ aux = edad[i]; edad[i] = edad[j]; edad[j] = aux; i++; j--; } }while( i <= j ); if( izq < j ) quicksort( edad, izq, j ); if( i < der ) quicksort( edad, i, der ); }
  7. 7. void ingresar(int cant,int n[]){ int i; for(i=0;i<cant;i++) { cout<<"Ingresa numero "<<i+1<<": "; cin>>n[i]; }}void imprimir(int cant,int n[]){ int i; for(i=0;i<cant;i++) { cout<<n[i]; }}COMENTARIO: este segundo programa se presenta el método de ordenamientoQuicksort, que es similar al método Shell pues toma un valor central del arreglopara realizar una serie de comparaciones, además va subdividiendo el arreglo enpartes para realizar la comparación, lo que permite que sea mas rápido, adiferencia de los otros métodos. En este programa se da la opción de que elusuario defina el tamaño del arreglo. Un punto importante de este programa esque se utilizan funciones a los cuales se le pasan valores, con los cuales realiza elproceso de ordenamiento. En la función main solo se realizan las llamadas a lasfunciones tanto de ingresar los valores y ordenarlos, como el método para imprimirlos datos.
  8. 8. CONCLUSIÓNEn la elaboración de estos métodos de ordenamiento, fue posible observar conmás detalle los problemas que se presentan en ocasiones por no saber comopoder organizar datos dentro de un arreglo. Aprender a utilizar algún método deordenamiento nos ayuda a agilizar uno de los procesos más complejos cuando setiene una gran cantidad de datos.Conocer cual es el mas rápido o el mas sencillo es lo de menos, pues todoscumplen con un solo objetivo al fin de cuentas que es la de mantener organizadogrupos de datos que se encuentran dentro de un arreglo, sin preocuparse por si nose ordenan adecuadamente, como sucedería si se realizara manualmente pordecirlo de alguna forma.Otra de las cosas que aprendí durante esta unidad y con este tipo de programas,es que no se necesitan grandes cantidades de código para poder lograr que unprograma realice operaciones complejas, esto lo menciono por que ninguno delmétodo con los que se trabajo era tan largo en cuanto a código.De la misma manera hago mención del trabajo con las funciones en programascomo estos. Gracias a la s funciones pude crear cada método de maneraindependiente dentro de un solo programa general, sin la preocupación de que sisurge algún error de sintaxis seria imposible localizarlo; cosa que sucedió muchoen la escritura del código, pero como cada método tenia su propia función, si sepresentaba algún error, era mas fácil de localizar y de corregir, sin tener quemodificar todo el código.De manera general, puedo decir que con cada programa que nos enseñan a comocrearlo, aprendo mucho, pues cuenta con características nuevas que cada ves sonmas complejas, pero que a la vez, facilitan algún proceso que en un principiopensaba era imposible facilitar. Claro ejemplo ordenar una gran cantidad de datosdentro de un arreglo, pues aunque en estos ejemplos se manejaron pocos datos,los programas se pueden adaptar sin ningún problema para cantidades de datosmuchísimo mas grandes.

×