3. ORDENACION DE ARREGLOS METODO BURBUJA LISTA DESORDENADA: 6 4 10 2 8 PRIMERA PASADA: 6 4 10 2 8 PRIMERA PASADA: 4 6 10 2 8 PRIMERA PASADA: 4 6 2 10 8 SEGUNDA PASADA: 4 6 2 8 10 SEGUNDA PASADA: 4 2 6 8 10 TERCERA PASADA: 4 2 6 8 10 TERCERA PASADA: 2 4 6 8 10 CUARTA PASADA: 2 4 6 8 10
4. ORDENACION DE ARREGLOS METODO BURBUJA #include "iostream" //se define lado de 9 posiciones #define lado 9 int 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 mayor int i, pasada , temporal; main () { 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 posicon gotoxy (3,5); cout<<"impresión en el orden original"; for (i=0; i<=lado-1;i++) { 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 0 for (pasada=0; pasada<=lado-1; pasada++) { //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 arreglo for (i=0; i<=lado-2; i++) { // aqui se declara la comparacion si va hacer menor o mayor if (a[i]> a[i+1]) { // aqui se realzia el intercambio temporal=a[i]; a[i]= a[i+1]; a[i+1]=temporal; } } } // aqui se imprimen ya ordenados la posicon y el valor gotoxy (30,10); cout<<"los datos ordenados de menor a mayor"; for (i= 0; i<9; i++) { gotoxy (45,11+i); cout<<i; gotoxy (55,11+i); cout<<a[i]; } getch (“pause”); return 0; }
5.
6. #include "iostream" // se declaran 3 funciones int 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 subindice int n,x,pasada,temporal; int media[]={n}; main() { system(“cls”); cout<<"a cuantos numeros deseas ordenar"; cin>> n; cout<<"impresion en orden original que fueron introducidos"; original(); cout<<"ordenamiento"; ordenamiento(); cout<<"impresion ordenados"; impresion(); system(“pause”); return 0; } int original() { x=0; while (x<n) { cout<<"dame los numeros"; cin>>media[x]; x++; } cout<<"los numneros introducidos en el orden original son:"; for (x=0;x<n;x++) { cout<< x<<media[x]; cout<<""; } return 0; }
7. int ordenamiento() { for (pasada=1;pasada<n;pasada++) { for (x=0;x<n-1;x++) { if (media[x]>media[x+1]) { temporal = media[x]; media[x] = media [x+1]; media[x+1]=temporal; } } } return 0; } int impresion() { for (x=0;x<n;x++) { cout<< x<<media[x]; cout<<""; } return 0; }
8.
9. EJEMPLO BUSQUEDA SECUENCIAL #include "iostream" int n; int buscar (int [], int z); int a []={0,n}; int i, y, num; void main( ) { system (“cls” ); cout<<"***busqueda lineal***"; cout<<"cuantos numeros deseas ingresar"; cin>>n; gotoxy(10,4);cout<<"posición"; gotoxy(20,4);cout<<"valor"; for ( i=0;i<n; i++) { gotoxy (10,5+i) ;cout <<i; gotoxy (20,5+i); cin>>a[i]; } cout<<"que numero deseas buscar "; cin>>num; cout<< "se encuentra en la posición " << buscar (a,num); system (“pause” ); } int buscar (int c [], int z) { int j; for (j=0; j<n; j++) { if(c[j]==z) return j; } }
10. #include "iostream" // se declaran 3 funciones int 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 subindice int n,x,pasada,temporal; int media[]={n}; main() { system(“cls”); cout<<"a cuantos numeros deseas ordenar"; cin>> n; cout<<"impresion en orden original que fueron introducidos"; original(); cout<<"ordenamiento"; ordenamiento(); cout<<"impresion ordenados"; impresion(); cout<<”busqueda lineal” busqueda(); system(“pause”); return 0; } int original() { x=0; while (x<n) { cout<<"dame los numeros"; cin>>media[x]; x++; } cout<<"los numneros introducidos en el orden original son:"; for (x=0;x<n;x++) { cout<< x<<media[x]; cout<<""; } return 0; }
11. int ordenamiento() { for (pasada=1;pasada<n;pasada++) { for (x=0;x<n-1;x++) { if (media[x]>media[x+1]) { temporal = media[x]; media[x] = media [x+1]; media[x+1]=temporal; } } } return 0; } int impresion() { for (x=0;x<n;x++) { cout<< x<<media[x]; cout<<""; } return 0; } int busqueda() { int z; cout<<"que numero deseas buscar "; cin>>z; for( x=0;x<n;x++) { if(media[x]==z) { cout<< "se encuentra en la posición " <<x<<media[x]; } } }
12. 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.