SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
INSTITUTO TECNOLOGICO SUPERIOR DE
       FELIPE CARRILLO PUERTO




   MATERIA:

    UNIDAD I:


          INFORME TECNICO

UNIDAD V: METODOS DE ORDENAMIENTO.
DOCENTE



     ALUMNO:
    SEMESTRE: III GRUPO: B AULA: J-4

                   LUNES 10 de DICIEMBRE del año 2012
INTRODUCCIÓN

En el presente informe técnico presento el código de tres métodos de
ordenamiento de datos. Cada uno con características propias. Son tres métodos
que se utilizan para poder dar un orden a cierto grupo de datos que se encuentren
almacenados dentro de un arreglo. Existen varios autores que se contradicen
sobre cual de todos los métodos de ordenamiento es el mas rápido y sencillo de
realizar. En la actualidad la mayoría coincide en que el método denominado
Quicksort es uno de los rápidos y sencillos de realizar, pues esta basado en la
técnica llamada “divide y vencerás”.

Las características de funcionamiento de cada método esta especificado en los
comentarios que encontrara enseguida del código de cada método.

Cabe mencionar que solo hare referencia a tres métodos de ordenamiento, los
cuales serán, el método Burbuja, el método QuickSort, -ya entes mencionado-, y el
método Shell. Solo abordare estos tres ya que son estos los más utilizados para la
organización de datos dentro de arreglos.

Un punto importante a tomar en cuenta es que se presentara dos programas, en el
primero se presenta dos de los métodos a los que se hace mención burbuja y
Shell, tendrá un menú con el que el usuario podrá decidir con que método desea
que se ordene su información. Pero eso si, cada método de ordenamiento esta
definido por un función al que se le llama dentro del programa principal. El
segundo programa presentara el método Quicksort, que debido a la forma de su
estructura se creo de manera independiente.

Todo lo anterior lo podrá observar con más detalle al estar frente al código que se
presenta en este trabajo
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;
}
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];
array[j] = array[k];
                                        array[k] = temp;
                                        j -= intervalo;
                                 }
                    }
             }

             intervalo = intervalo / 2;
      }

}


COMENTARIO: Este programa presenta dos métodos de ordenamiento. Pero
primero se crea un arreglo que consta de 5 datos que el usuario ingresa, con base
a estos cinco elementos que se ingresan al azar, se prueban lo métodos de
ordenamiento que en este caso son el método burbuja y el método Shell. Para que
el usuario elija con que método desea ordenar el arreglo, se creo un menú. El
primer 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 un
cambio de posición, sucesivamente hasta ordenar por completo. En cuanto al
Shell, 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étodo
utilizar después de ingresar sus 5 datos, se imprime el orden en el que ingreso los
datos para demostrar que realmente se ordenan los datos por medio de estos
métodos.

Para realizar las operaciones tanto de los ordenamiento, como el de ingresar e
imprimir los valores, además de una función menú, se utilizaron funciones, a los
cuales solo se tuvo que invocar dentro de la función principal main, que utiliza un
switch case para dar la opción de elegir las acciones que el usuario desea realizar
dentro del programa. Además la función del método burbuja utilizo una función
auxiliar el cual se llamo intercambio, como se puede observar en el código.
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 );
     }
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 ordenamiento
Quicksort, que es similar al método Shell pues toma un valor central del arreglo
para realizar una serie de comparaciones, además va subdividiendo el arreglo en
partes para realizar la comparación, lo que permite que sea mas rápido, a
diferencia de los otros métodos. En este programa se da la opción de que el
usuario defina el tamaño del arreglo. Un punto importante de este programa es
que se utilizan funciones a los cuales se le pasan valores, con los cuales realiza el
proceso de ordenamiento. En la función main solo se realizan las llamadas a las
funciones tanto de ingresar los valores y ordenarlos, como el método para imprimir
los datos.
CONCLUSIÓN

En la elaboración de estos métodos de ordenamiento, fue posible observar con
más detalle los problemas que se presentan en ocasiones por no saber como
poder organizar datos dentro de un arreglo. Aprender a utilizar algún método de
ordenamiento nos ayuda a agilizar uno de los procesos más complejos cuando se
tiene una gran cantidad de datos.
Conocer cual es el mas rápido o el mas sencillo es lo de menos, pues todos
cumplen con un solo objetivo al fin de cuentas que es la de mantener organizado
grupos de datos que se encuentran dentro de un arreglo, sin preocuparse por si no
se ordenan adecuadamente, como sucedería si se realizara manualmente por
decirlo 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 un
programa realice operaciones complejas, esto lo menciono por que ninguno del
mé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 programas
como estos. Gracias a la s funciones pude crear cada método de manera
independiente dentro de un solo programa general, sin la preocupación de que si
surge algún error de sintaxis seria imposible localizarlo; cosa que sucedió mucho
en la escritura del código, pero como cada método tenia su propia función, si se
presentaba algún error, era mas fácil de localizar y de corregir, sin tener que
modificar todo el código.

De manera general, puedo decir que con cada programa que nos enseñan a como
crearlo, aprendo mucho, pues cuenta con características nuevas que cada ves son
mas complejas, pero que a la vez, facilitan algún proceso que en un principio
pensaba era imposible facilitar. Claro ejemplo ordenar una gran cantidad de datos
dentro de un arreglo, pues aunque en estos ejemplos se manejaron pocos datos,
los programas se pueden adaptar sin ningún problema para cantidades de datos
muchísimo mas grandes.

Mais conteúdo relacionado

Mais procurados

7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql ServerCorfapo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenasTap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenasJosé Antonio Sandoval Acosta
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classesflekoso
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Genericsflekoso
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collectionsflekoso
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignacionesflekoso
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NETbrobelo
 

Mais procurados (16)

7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server7090112 Clase Transact Sql Server
7090112 Clase Transact Sql Server
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenasTap u2-componentes y librerias-programa para cifrar y descifrar cadenas
Tap u2-componentes y librerias-programa para cifrar y descifrar cadenas
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
C++
C++C++
C++
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classes
 
SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Generics
 
Separata java script
Separata java scriptSeparata java script
Separata java script
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Clase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScriptClase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScript
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NET
 

Destaque

Informe de ingenieria de caminos
Informe de ingenieria de caminosInforme de ingenieria de caminos
Informe de ingenieria de caminoserichardd
 
Algunos tips para_elaborar_informes
Algunos tips para_elaborar_informesAlgunos tips para_elaborar_informes
Algunos tips para_elaborar_informesmonaluisa72
 
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...Bryan Aucca
 
Guía práctica para elaborar informes escritos
Guía práctica para elaborar informes escritosGuía práctica para elaborar informes escritos
Guía práctica para elaborar informes escritosmxmm2013
 
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...Angelo Alvarez Sifuentes
 
informe-de-practica-carretera
 informe-de-practica-carretera informe-de-practica-carretera
informe-de-practica-carreteraLizbet Gamarra
 
Obras de drenaje unidad 3
Obras de drenaje unidad 3Obras de drenaje unidad 3
Obras de drenaje unidad 3Israel Rmz
 
Curvas horizontales transiciones-y-peraltes1
Curvas horizontales transiciones-y-peraltes1Curvas horizontales transiciones-y-peraltes1
Curvas horizontales transiciones-y-peraltes1benito herbert sarmiento
 
Presentacion informe de auditoria final
Presentacion informe de auditoria finalPresentacion informe de auditoria final
Presentacion informe de auditoria finalshernandez3854
 
Como Presentar Un Informe Escrito
Como Presentar Un Informe EscritoComo Presentar Un Informe Escrito
Como Presentar Un Informe EscritoCRBeL
 

Destaque (14)

Informe de ingenieria de caminos
Informe de ingenieria de caminosInforme de ingenieria de caminos
Informe de ingenieria de caminos
 
Presentacion IA 2009
Presentacion IA 2009Presentacion IA 2009
Presentacion IA 2009
 
Algunos tips para_elaborar_informes
Algunos tips para_elaborar_informesAlgunos tips para_elaborar_informes
Algunos tips para_elaborar_informes
 
Informe caminos
Informe caminosInforme caminos
Informe caminos
 
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...
Informe de curvatura en diseño de carreteras(aplicacion de limites en la inge...
 
Guía práctica para elaborar informes escritos
Guía práctica para elaborar informes escritosGuía práctica para elaborar informes escritos
Guía práctica para elaborar informes escritos
 
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...
Trabajo 2-de-caminos DISEÑO GEOMÉTRICO DE EJES DEL CAMINO EN PLANTA DE LA CAR...
 
informe de caminos
informe de caminosinforme de caminos
informe de caminos
 
Presentacion ensayo para suelos
Presentacion ensayo para suelosPresentacion ensayo para suelos
Presentacion ensayo para suelos
 
informe-de-practica-carretera
 informe-de-practica-carretera informe-de-practica-carretera
informe-de-practica-carretera
 
Obras de drenaje unidad 3
Obras de drenaje unidad 3Obras de drenaje unidad 3
Obras de drenaje unidad 3
 
Curvas horizontales transiciones-y-peraltes1
Curvas horizontales transiciones-y-peraltes1Curvas horizontales transiciones-y-peraltes1
Curvas horizontales transiciones-y-peraltes1
 
Presentacion informe de auditoria final
Presentacion informe de auditoria finalPresentacion informe de auditoria final
Presentacion informe de auditoria final
 
Como Presentar Un Informe Escrito
Como Presentar Un Informe EscritoComo Presentar Un Informe Escrito
Como Presentar Un Informe Escrito
 

Semelhante a METODOS DE ORDENAMIENTO

Informe tecnicou1
Informe tecnicou1Informe tecnicou1
Informe tecnicou1Aristo1
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- Eliu Osseas Puc Puc
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras linealeseliezerbs
 
Diapositivas marleni
Diapositivas marleniDiapositivas marleni
Diapositivas marlenilenithoz
 
Diapositivas marleni
Diapositivas marleniDiapositivas marleni
Diapositivas marlenilenithoz
 
Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1eliezerbs
 
Ejercicios resueltos informática II practica 1 (nueva 2014)
Ejercicios resueltos informática II practica 1 (nueva 2014)Ejercicios resueltos informática II practica 1 (nueva 2014)
Ejercicios resueltos informática II practica 1 (nueva 2014)Alvin Jacobs
 
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)luis freddy
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en javaeccutpl
 
Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uexvictoruex
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)luis freddy
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)luis freddy
 

Semelhante a METODOS DE ORDENAMIENTO (20)

Informe tecnicou1
Informe tecnicou1Informe tecnicou1
Informe tecnicou1
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento-
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras lineales
 
Informe estructuras lineales
Informe estructuras linealesInforme estructuras lineales
Informe estructuras lineales
 
Diapositivas marleni
Diapositivas marleniDiapositivas marleni
Diapositivas marleni
 
Diapositivas marleni
Diapositivas marleniDiapositivas marleni
Diapositivas marleni
 
Shell
ShellShell
Shell
 
Unidad 5 informe técnico
Unidad 5 informe técnicoUnidad 5 informe técnico
Unidad 5 informe técnico
 
Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1Informe estructura de datos Unidad 1
Informe estructura de datos Unidad 1
 
Ejercicios resueltos informática II practica 1 (nueva 2014)
Ejercicios resueltos informática II practica 1 (nueva 2014)Ejercicios resueltos informática II practica 1 (nueva 2014)
Ejercicios resueltos informática II practica 1 (nueva 2014)
 
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)
3 desarollo manejo datos capitulo 1 -01 arreglos de dimension (6)
 
Java 1
Java 1Java 1
Java 1
 
Ordenar arreglos en java
Ordenar arreglos en javaOrdenar arreglos en java
Ordenar arreglos en java
 
Guia 12 js
Guia 12 jsGuia 12 js
Guia 12 js
 
Informe tecnico victor_uex
Informe tecnico victor_uexInforme tecnico victor_uex
Informe tecnico victor_uex
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
Practica
PracticaPractica
Practica
 
Mod2ud2 1
Mod2ud2 1Mod2ud2 1
Mod2ud2 1
 

Mais de LuiS YmAY

Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.LuiS YmAY
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfazLuiS YmAY
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLLuiS YmAY
 
Externalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosExternalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosLuiS YmAY
 
programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4LuiS YmAY
 
Dispositivos logicos programables
Dispositivos logicos programablesDispositivos logicos programables
Dispositivos logicos programablesLuiS YmAY
 
conversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoconversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoLuiS YmAY
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4LuiS YmAY
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALLuiS YmAY
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidoresLuiS YmAY
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSLuiS YmAY
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSLuiS YmAY
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cineticaLuiS YmAY
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaLLuiS YmAY
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.opticaLuiS YmAY
 

Mais de LuiS YmAY (16)

Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfaz
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Externalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosExternalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costos
 
programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4
 
Dispositivos logicos programables
Dispositivos logicos programablesDispositivos logicos programables
Dispositivos logicos programables
 
conversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoconversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogico
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidores
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOS
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cinetica
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.optica
 

METODOS DE ORDENAMIENTO

  • 1. INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO MATERIA: UNIDAD I: INFORME TECNICO UNIDAD V: METODOS DE ORDENAMIENTO. DOCENTE ALUMNO: SEMESTRE: III GRUPO: B AULA: J-4 LUNES 10 de DICIEMBRE del año 2012
  • 2. INTRODUCCIÓN En el presente informe técnico presento el código de tres métodos de ordenamiento de datos. Cada uno con características propias. Son tres métodos que se utilizan para poder dar un orden a cierto grupo de datos que se encuentren almacenados dentro de un arreglo. Existen varios autores que se contradicen sobre cual de todos los métodos de ordenamiento es el mas rápido y sencillo de realizar. En la actualidad la mayoría coincide en que el método denominado Quicksort es uno de los rápidos y sencillos de realizar, pues esta basado en la técnica llamada “divide y vencerás”. Las características de funcionamiento de cada método esta especificado en los comentarios que encontrara enseguida del código de cada método. Cabe mencionar que solo hare referencia a tres métodos de ordenamiento, los cuales serán, el método Burbuja, el método QuickSort, -ya entes mencionado-, y el método Shell. Solo abordare estos tres ya que son estos los más utilizados para la organización de datos dentro de arreglos. Un punto importante a tomar en cuenta es que se presentara dos programas, en el primero se presenta dos de los métodos a los que se hace mención burbuja y Shell, tendrá un menú con el que el usuario podrá decidir con que método desea que se ordene su información. Pero eso si, cada método de ordenamiento esta definido por un función al que se le llama dentro del programa principal. El segundo programa presentara el método Quicksort, que debido a la forma de su estructura se creo de manera independiente. Todo lo anterior lo podrá observar con más detalle al estar frente al código que se presenta en este trabajo
  • 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. 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. array[j] = array[k]; array[k] = temp; j -= intervalo; } } } intervalo = intervalo / 2; } } COMENTARIO: Este programa presenta dos métodos de ordenamiento. Pero primero se crea un arreglo que consta de 5 datos que el usuario ingresa, con base a estos cinco elementos que se ingresan al azar, se prueban lo métodos de ordenamiento que en este caso son el método burbuja y el método Shell. Para que el usuario elija con que método desea ordenar el arreglo, se creo un menú. El primer 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 un cambio de posición, sucesivamente hasta ordenar por completo. En cuanto al Shell, 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étodo utilizar después de ingresar sus 5 datos, se imprime el orden en el que ingreso los datos para demostrar que realmente se ordenan los datos por medio de estos métodos. Para realizar las operaciones tanto de los ordenamiento, como el de ingresar e imprimir los valores, además de una función menú, se utilizaron funciones, a los cuales solo se tuvo que invocar dentro de la función principal main, que utiliza un switch case para dar la opción de elegir las acciones que el usuario desea realizar dentro del programa. Además la función del método burbuja utilizo una función auxiliar el cual se llamo intercambio, como se puede observar en el código.
  • 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. 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 ordenamiento Quicksort, que es similar al método Shell pues toma un valor central del arreglo para realizar una serie de comparaciones, además va subdividiendo el arreglo en partes para realizar la comparación, lo que permite que sea mas rápido, a diferencia de los otros métodos. En este programa se da la opción de que el usuario defina el tamaño del arreglo. Un punto importante de este programa es que se utilizan funciones a los cuales se le pasan valores, con los cuales realiza el proceso de ordenamiento. En la función main solo se realizan las llamadas a las funciones tanto de ingresar los valores y ordenarlos, como el método para imprimir los datos.
  • 8. CONCLUSIÓN En la elaboración de estos métodos de ordenamiento, fue posible observar con más detalle los problemas que se presentan en ocasiones por no saber como poder organizar datos dentro de un arreglo. Aprender a utilizar algún método de ordenamiento nos ayuda a agilizar uno de los procesos más complejos cuando se tiene una gran cantidad de datos. Conocer cual es el mas rápido o el mas sencillo es lo de menos, pues todos cumplen con un solo objetivo al fin de cuentas que es la de mantener organizado grupos de datos que se encuentran dentro de un arreglo, sin preocuparse por si no se ordenan adecuadamente, como sucedería si se realizara manualmente por decirlo 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 un programa realice operaciones complejas, esto lo menciono por que ninguno del mé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 programas como estos. Gracias a la s funciones pude crear cada método de manera independiente dentro de un solo programa general, sin la preocupación de que si surge algún error de sintaxis seria imposible localizarlo; cosa que sucedió mucho en la escritura del código, pero como cada método tenia su propia función, si se presentaba algún error, era mas fácil de localizar y de corregir, sin tener que modificar todo el código. De manera general, puedo decir que con cada programa que nos enseñan a como crearlo, aprendo mucho, pues cuenta con características nuevas que cada ves son mas complejas, pero que a la vez, facilitan algún proceso que en un principio pensaba era imposible facilitar. Claro ejemplo ordenar una gran cantidad de datos dentro de un arreglo, pues aunque en estos ejemplos se manejaron pocos datos, los programas se pueden adaptar sin ningún problema para cantidades de datos muchísimo mas grandes.