Está en la página 1de 3

Nombre: Santiago Ren Sarmiento Sotomayor Docente: Ing. Daniel Irene Tema: Mtodo de Intercambio o de Burbuja.

Consiste en evaluar pares de elementos contiguos del arreglo, y si el primero es mayor que el siguiente los intercambia, segn la condicin. Todo sucede dentro de dos ciclos (for) que recorren el arreglo. El ciclo ms interno realiza las comparaciones, y es ah donde el elemento mayor ocupara una posicin mayor. Formas de Mtodo Burbuja: Comparando primer elemento con el segundo, luego segundo con tercero y sucesivamente. for (i=1;i<Nelementos;i++) { for (j=0;j<=Nelementos-1 ;j++) { if (array[j] > array[j+1]) { Aux=array[j]; array[j]=array[j+1]; array[j+1]=Aux; } } }

Comparando primer elemento con todos los dems restantes, y luego el segundo con todos los elementos restantes, as sucesivamente.

El algoritmo se puede disear para que ordene un vector de forma ascendente como tambin descendentemente.

for (i = 0; i < Nelementos; i++) { for (int j = i +1; j < Nelementos; j++) { if (array[i] > array[j]) { Aux = array[i]; array[i] = array[j]; array[j] = Aux; } } }

Ejemplo: Ordenar ascendentemente el siguiente vector.

A=[5, 3, 7, 1]

(Corrida manual) Array (limite=3) A=[5, 3, 7, 1] A=[3, 5, 7, 1] A=[3, 5, 7, 1] A=[3, 5, 1, 7] A=[3, 5, 1, 7] A=[3, 1, 5, 7] A=[3, 1, 5, 7] A=[1, 3, 5, 7]

Condicin for(j=0;j<limite;j++) Pasos { for(i=0;i<limite;i++) If(A[i]>A[i+1]) intercambia } 1 2 3 4 5 6 7 Primer array A=[5, 3, 7, 1] Array ordenado de forma ascendente A=[1, 3, 5, 7] 5>3 5<7 7>1 Vuelvo a comparar desde A[0] 3<5 5>1 5>7 Vuelvo a A[0] 3>1 Fin Procedimiento

Mtodos Directos de Ordenamiento de un Array o Vector. Burbuja. Insercin Directa. Consiste en insertar un elemento en el vector y comenzar de nuevo con los elementos restantes. Ejemplo: ordenar el elemento 7.

Insertaremos el elemento numero 8 saltando por los elementos 6 y 7.

Seleccin. 1. Seleccionar el menor elemento del vector de n elementos. 2. Intercambia dicho elemento con el primero. 3. Se repiten esas operaciones con n-1 elementos restantes, se selecciona el segundo y continuamos con n-2, as sucesivamente hasta que solo quede el mayor.

Referencia: http://www.nachocabanes.com/tutors/salvadorPozo-Cpp.pdf http://webdelprofesor.ula.ve/ingenieria/eliana/prog/Vectores.pdf

EJEMPLO: Usar mtodo burbuja para ordenar el array creado aleatoriamente. Metodo_Burbuja.cpp #include <iostream> #include <time.h> #include <cstdlib> #include <windows.h> #define length(x) (sizeof(x)/sizeof(x[0])) using namespace std; void cambio(int &a, int &b); void ordenar_burbuja(int arreglo[], int limite); void mostrar_array(int arreglo[], int limite); int main() { int lim=0; cout<<"Ingrese el limite del array unidimensional"<<endl; cin>>lim; int array[lim]; srand(time(NULL)); cout<<"\n"<<"Primer array"<<endl<<"A=["; for (int i=0; i<lim;i++)//crea un array con numeros aleatorios array[i]=1+rand()%29; mostrar_array(array,lim); cout<<" ]"<<"\n\n"<<"Array ordenado"<<"\n"<<"A=["; ordenar_burbuja(array,lim); mostrar_array(array,lim); cout<<" ]"; system("pause>null"); return 0; } void ordenar_burbuja(int arreglo[], int limite)//Compara susecivamente. { for (int i=0;i<limite-1;i++) for (int j=0;j<limite-1;j++) if(arreglo[j] > arreglo[j+1]) cambio(arreglo[j],arreglo[j+1]); } void cambio(int &a, int &b)//Paso por referencia de valor de un elemento { int aux=b; b=a; a=aux; } void mostrar_array(int arreglo[], int limite) { for (int i=0; i<limite;i++) cout<<" "<<arreglo[i]; }

El cdigo fuente est diseado para que comprare cada uno de los elementos con el que le sigue, de esa forma sucesivamente hasta terminar el proceso.

También podría gustarte