Arreglos2

12

Click here to load reader

Transcript of Arreglos2

Page 1: Arreglos2

ORDENACION DE ARREGLOS

• LA ORDENACION DE ARREGLOS ES OTRA DE LAS TAREAS USUALES EN LA MAYORIA DE LOS PROGRAMAS.

• LA ORDENACION O CLASIFICACION ES EL PROCEDIMIENTO MEDIANTE EL CUAL SE DISPONE LOS ELEMENTOS DEL ARRAY EN UN ORDEN ESPECIFICO, TAL COMO ORDEN ALFABETICO U ORDEN NUMERICO.

• EXISTEN NUMEROS ALGORITMOS DE ORDENACION DE ARREGLOS COMO SON: INSERCION, BURBUJA, SELECCIÓN RAPIDA, FUSION, MONTICULO, SHELL.

• EL METODO MAS OCUPADO Y FACIL ES EL METODO BURBUJA.

Page 2: Arreglos2

ORDENACION DE ARREGLOS METODO BURBUJA

• LA ORDENACION POR BURBUJA ES UNO DE LOS METODOS MAS FACILES DE ORDENACION.

• EL METODO ALGORITMO BURBUJA ES MUY SIMPLE. SE COMPARA CADA ELEMENTO DEL ARREGLO CON EL SIGUIENTE (POR AREJAS), SI NO ESTAN EN EL ORDEN CORRECTO, SE INTERCAMBIAN ENTRE SI SUS VALORES. EL VALOR MAS PEQUEÑO FLOTA HASTA LA PARTE SUPERIOR DEL ARRAY COMO SI FUERA UNA BURBUJA EN UN VASO DE REFRESCO CON GAS.

Page 3: Arreglos2

ORDENACION DE ARREGLOS METODO BURBUJA

LISTA DESORDENADA: 6 4 10 2 8

PR

IME

RA

PA

SA

DA

: 6

4

10

2

8

PR

IME

RA

PA

SA

DA

: 4

6

10

2

8

PR

IME

RA

PA

SA

DA

: 4

6

2

10

8

SE

GU

ND

A P

AS

AD

A:

4 6

2

8

10

SE

GU

ND

A P

AS

AD

A:

4 2

6

8

10

TE

RC

ER

A P

AS

AD

A:

4 2

6

8

10

TE

RC

ER

A P

AS

AD

A:

2

4

6

8

10

CU

AR

TA

P

AS

AD

A:

2

4 6

8

10

Page 4: Arreglos2

ORDENACION DE ARREGLOS METODO BURBUJA#include "iostream"//se define lado de 9 posiciones#define lado 9int a[lado]={2,6,4,18,12,89,68,45,37};// i sera el indice o subindice,pasadas llevara el ordenamiento, temporal servira para realizar el intercambio de valores de //menor a mayorint i, pasada , temporal;main ()m{system(“cls”);//imprimo los datos en el orden que se declararon, a partir de la posicon 0 a la 10=10 posiciones,i es el indice o posicion del arreglo y a[i] es //el valor que tiene el arreglo en esa posicongotoxy (3,5); cout<<"impresión en el orden original";for (i=0; i<=lado-1;i++)f{gotoxy (5,7+i);cout<<i;gotoxy(10,7+i); cout<<a[i];}

//Metodo burbuja, pasadas//controla las pasadas de ordenamiento por regla general tendra que realizarse el mismo numero de pasadas, que la longitud del arreglo aqui //se instala en la primera posicion posicion 0for (pasada=0; pasada<=lado-1; pasada++)f{//aqui compara la primera posicon con la segunda y la opcion lado-2, es logica ya que como siempre se comparan en parestendra //quedetenerse faltando 2 posiciones antes de que termine el arreglofor (i=0; i<=lado-2; i++)f{// aqui se declara la comparacion si va hacer menor o mayorif (a[i]> a[i+1])i{// aqui se realzia el intercambiotemporal=a[i];a[i]= a[i+1];a[i+1]=temporal; } }}// aqui se imprimen ya ordenados la posicon y el valorgotoxy (30,10); cout<<"los datos ordenados de menor a mayor";for (i= 0; i<9; i++)f {gotoxy (45,11+i); cout<<i;gotoxy (55,11+i); cout<<a[i];}getch (“pause”);return 0;}

Page 5: Arreglos2

BUSQUEDA EN ARREGLOS

• LOS ARRAY (LISTAS Y TABLAS) SON UNO DE LOS MEDIOS PRINCIPALES POR LOS CUALES SE ALMACENAN LOS DATOS EN PROGRAMAS C++. DEBIDO A ESTO, EXISTEN OPERACIONES FUNDAMENTALES CUYO TRATAMIENTO ES IMPRESCINDIBLE CONOCER, COMO SON LA ORDENACION Y BUSQUEDA DE LAS LISTAS.

• LA BUSQUEDA DE UN ELEMENTO DADO EN UN ARRAY (LISTA O TABLA) ES UNA APLICACIÓN MUY USUAL EN EL DESARROLLO DE PROGRAMAS C++. DOS ALGORITMOS TIPICOS QUE REALIZAN ESTA TAREA SON LA BUSQUEDA SECUENCIAL O EN SERIE Y LA BUSQUEDA BINARIA O DICOTOMICA.

• LA BUSQUEDA SECUENCIAL ES EL METODO UTILIZADO PARA LAS LISTAS NO ORDENADAS.

• LA BUSQUEDA BINARIA SE UTILIZA EN ARRAY QUE YA ESTAN ORDENADOS

Page 6: Arreglos2

#include "iostream"// se declaran 3 funcionesint original();int ordenamiento();int impresion();//n significa n posiciones, media es el arreglo,pasadas es el //ordenamiento, temporal sirve para el intercambio de valores, x es el //indice o subindiceint n,x,pasada,temporal;int media[]={n};main()m{ system(“cls”); cout<<"a cuantos numeros deseas ordenar"; cin>> n; cout<<"impresion en orden original que fueron introducidos"; original(); cout<<"ordenamiento\n"; ordenamiento(); cout<<"impresion ordenados"; impresion(); system(“pause”); return 0;}

int original()i { x=0; while (x<n)w { cout<<"dame los numeros"; cin>>media[x]; x++; } cout<<"los numneros introducidos en el orden original son:\n"; for (x=0;x<n;x++)f { cout<< x<<media[x]; cout<<"\n"; } return 0; }

Page 7: Arreglos2

int ordenamiento()i { for (pasada=1;pasada<n;pasada++)f { for (x=0;x<n-1;x++)f { if (media[x]>media[x+1])i { temporal = media[x]; media[x] = media [x+1]; media[x+1]=temporal; } } } return 0; }

int impresion()i { for (x=0;x<n;x++)f { cout<< x<<media[x]; cout<<"\n"; } return 0; }

Page 8: Arreglos2

BUSQUEDA SECUENCIAL

• ESTE ALGORITMO BUSCA EL ELEMENTO DADO, RECORRIENDO SECUENCIALMENTE EL ARRAY DESDE UN ELEMENTO AL SIGUIENTE, COMENZANDO EN LA PRIMERA POSICION DEL ARRAY Y SE DETIENE CUANDO SE ENCUENTRA EL ELEMENTO BUSCADO O BIEN SE ALCANZA EL FINAL DEL ARRAY

• ESTA TAREA REPETITIVA SE REALIZA CON BUCLES.

Page 9: Arreglos2

EJEMPLO BUSQUEDA SECUENCIAL

#include "iostream"

int n;int buscar (int [], int z);int a []={0,n};int i, y, num;void main( )v{system (“cls” );cout<<"***busqueda lineal***\n";cout<<"cuantos numeros deseas ingresar\n";cin>>n;gotoxy(10,4);cout<<"posición";gotoxy(20,4);cout<<"valor"; for ( i=0;i<n; i++)f{gotoxy (10,5+i) ;cout <<i;gotoxy (20,5+i); cin>>a[i];}cout<<"que numero deseas buscar \n";cin>>num;cout<< "se encuentra en la posición \n" << buscar (a,num);system (“pause” );}

int buscar (int c [], int z)i{ int j;for (j=0; j<n; j++)f{if(c[j]==z)ireturn j;}}

Page 10: Arreglos2

#include "iostream"// se declaran 3 funcionesint original();int ordenamiento();int impresion();int busqueda();//n significa n posiciones, media es el arreglo,pasadas es el //ordenamiento, temporal sirve para el intercambio de valores, x es el //indice o subindiceint n,x,pasada,temporal;int media[]={n};main()m{ system(“cls”); cout<<"a cuantos numeros deseas ordenar"; cin>> n; cout<<"impresion en orden original que fueron introducidos"; original(); cout<<"ordenamiento\n"; ordenamiento(); cout<<"impresion ordenados"; impresion(); cout<<”busqueda lineal” busqueda(); system(“pause”); return 0;}

int original()i { x=0; while (x<n)w { cout<<"dame los numeros"; cin>>media[x]; x++; } cout<<"los numneros introducidos en el orden original son:\n"; for (x=0;x<n;x++)f { cout<< x<<media[x]; cout<<"\n"; } return 0; }

Page 11: Arreglos2

int ordenamiento()i { for (pasada=1;pasada<n;pasada++)f { for (x=0;x<n-1;x++)f { if (media[x]>media[x+1])i { temporal = media[x]; media[x] = media [x+1]; media[x+1]=temporal; } } } return 0; }

int impresion()i { for (x=0;x<n;x++)f { cout<< x<<media[x]; cout<<"\n"; } return 0; }

int busqueda()i{ int z;cout<<"que numero deseas buscar \n";cin>>z;

for( x=0;x<n;x++)f{if(media[x]==z)i{ cout<< "se encuentra en la posición \n" <<x<<media[x];}

}}

Page 12: Arreglos2

Para arreglos ordenados es muy utilizado el método de búsqueda binaria, que consiste en irse directamente al elemento de central (posición de en medio) del arreglo, si el valor buscado es menor la primera mitad del arreglo se desecha, y si es mayor la se desecha la segunda. Se hace lo mismo con la parte que quedo del arreglo buscando el punto medio, y así sucesivamente. El mayor número de comparaciones posibles es igual a la mitad del tamaño del arreglo.