10
1 INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO MATERIA: ESTRUCTURA DE DATOS DOCENTE: MIL. NIELS HENRYK ARANDA CUEVAS UNIDAD 5: Métodos de ordenamiento ALUMNO: ELIEZER BALAM SANTOS CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES GRUPO: B

Informe metodos de ordenamiento

Embed Size (px)

Citation preview

Page 1: Informe metodos de ordenamiento

1

INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE

CARRILLO PUERTO

MATERIA:

ESTRUCTURA DE DATOS

DOCENTE:

MIL. NIELS HENRYK ARANDA CUEVAS

UNIDAD 5:

Métodos de ordenamiento

ALUMNO:

ELIEZER BALAM SANTOS

CARRERA:

INGENIERIA EN SISTEMAS COMPUTACIONALES

GRUPO:

B

Page 2: Informe metodos de ordenamiento

2

INDRODUCCION:

En esta unidad se entra en la manera de manejo de datos pero no por medio de las maneras vistas anteriormente, sino en una forma de definir la posiciones de los datos por medio de la jerarquía de los datos que se tienen, existen varios métodos para realizarlo de diferentes manera una de las principales es el método burbuja y otros métodos como el quicksort y el método radix, que siempre tienen el mismo propósito de ordenamiento de los datos.

Primer programa de ordenamiento. Método burbuja

#include <iostream>

using namespace std;

void intercambio();

void imprimir();

int Aux;

int i, d;

int A[5];

int main(int argc, char** argv) {

for(i=0; i<5; i++){

cout<<"Ingrese numero: ";

cin>>A[i];

}

for(i=0; i<4; i++){

for(d=i+1; d<5; d++){

Page 3: Informe metodos de ordenamiento

3

if(A[d]>A[i]){

intercambio( );

}

}

}

imprimir();

return 0;

}

void intercambio(){

Aux= A[i];

A[i]= A[d];

A[d]= Aux;

}

void imprimir(){

cout<<"\n La secuencia de Mayor a Menor es: ";

for(i=0; i<5; i++){

cout<< A[i];

}

}

Page 4: Informe metodos de ordenamiento

4

Descripción del programa:

El programa anterior es un método de ordenamiento de datos con varias funciones que son llamados, como ya sabemos tenemos los códigos principales que ya sabemos utilizar, como lo son los condicionales y los datos abstractos, lo que realizamos es la lectura de los datos que son los números y en base a esos números realizamos el ordenamiento por medio de los apuntadores que se tienen, también podemos interpretarlo si queremos de una manera de árboles.

MÉTODO QUICKSHORT.

#include <iostream>

using namespace std;

void leerarreglo();

void imprimrarre();

void ordenarQuick();

void inter(int x, int y);

int i,j,A[7];

int main(int argc, char *argv[]) {

leerarreglo();

imprimrarre();

ordenarQuick();

imprimrarre();

return 0;

}

void leerarreglo(){

Page 5: Informe metodos de ordenamiento

5

for(i=0;i<7;i++){

cout<<"ingrese dato ";

cin>>A[i];

}

}

void imprimrarre(){

for(i=0;i<7;i++){

cout<<A[i]<<" ";

}

cout<<"n";

}

void ordenarQuick(){

int p=6;

i=0;

j=5;

do{

if ((A[i]>A[p])&&(A[j]<A[p])){

inter (i,j);

i++; j--;

}

else {

if (A[i]<A[p])

i++;

if (A[j]>A[p])

j--;

Page 6: Informe metodos de ordenamiento

6

}

}while (j>i);

if (A[p]<A[i])

inter (i,p);

}

void inter(int x, int y){

int Aux=A[y];

A[y]=A[x];

A[x]=Aux;

}

Este método realiza el ordenamiento de dato de una manera mas compleja.

METODO RADIX.

#include<iostream>

using namespace std;

#include <math.h>

#define NUMELTS 20

void radixsort(int x[], int n)

{

int front[10], rear[10];

struct {

int info;

int next;

} node[NUMELTS];

Page 7: Informe metodos de ordenamiento

7

int exp, first, i, j, k, p, q, y;

/* Inicializar una lista vinculada */

for (i = 0; i < n-1; i++)

{

node[i].info = x[i];

node[i].next = i+1;

} /* fin del for */

node[n-1].info = x[n-1];

node[n-1].next = -1;

first = 0; /* first es la cabeza de la lista vinculada */

for (k = 1; k < 5; k++)

{

/* Suponer que tenemos números de cuatro dígitos */

for (i = 0; i < 10; i++)

{

/*Inicializar colas */

rear[i] = -1;

front[i] = -1;

} /*fin del for */

/* Procesar cada elemento en la lista */

while (first != -1)

{

Page 8: Informe metodos de ordenamiento

8

p = first;

first = node[first].next;

y = node[p].info;

/* Extraer el kâsimo dÁgito */

exp = pow(10, k-1); /* elevar 10 a la (k-1)ésima potencia */

j = (y/exp) % 10;

/* Insertar y en queue[j] */

q = rear[j];

if (q == -1)

front[j] = p;

else

node[q].next = p;

rear[j] = p;

} /*fin del while */

/* En este punto, cada registro está en su cola basándose en el dígito k

Ahora formar una lista única de todos los elementos de la cola.

Encontrar el primer elemento. */

for (j = 0; j < 10 && front[j] == -1; j++);

;

first = front[j];

/* Vincular las colas restantes */

while (j <= 9)

{ /* Verificar si se ha terminado */

/*Encontrar el elemento siguiente */

for (i = j+1; i < 10 && front[i] == -1; i++);

Page 9: Informe metodos de ordenamiento

9

;

if (i <= 9)

{

p = i;

node[rear[j]].next = front[i];

} /* fin del if */

j = i;

} /* fin del while */

node[rear[p]].next = -1;

} /* fin del for */

/* Copiar de regreso al archivo original */

for (i = 0; i < n; i++)

{

x[i] = node[first].info;

first = node[first].next;

} /*fin del for */

} /* fin de radixsort*/

int main(void)

{

int x[50] = {NULL}, i;

static int n;

cout<<"Cadena de números enteros:\n";

for (n = 0;n<5; n++)

Page 10: Informe metodos de ordenamiento

10

{

cin>>x[n];

if(x[n]==-1)

break;

}

if (n)

radixsort (x, n);

for (i = 0; i < n; i++)

cout<<x[i]<<endl;;

return 0;

}

Este método radix es aún más compleja.

CONCLUSION:

Como conclusión tenemos que el uso de estos métodos son importantes para manejar los datos ya que se pueden presentar situaciones donde podemos requerir del uso de cualquiera de las anteriores mencionadas dependiendo de la capacidad de datos que se ingresan en nuestro programa y podemos decir que lo más importante a conocer es el método burbuja. Como hemos dicho anteriormente va ser de gran ayuda para nosotros en nuestra formación academica.