borbuja

6
Yo se que el metodo de la burbuja sirve para ordenar las posiciones de un vector de menor a mayor.. se que se hace una comparacion entre las posiciones y eso ps... Pero "como se codifica"? no lo se... osea, como se escribe en lenguaje c para que la compu lo entienda y eso..... Aunque ya he visto cositas de como es, no entiendo nada nada, porque en una parte del código, se coloca n-1, por ejemplo aqui "for (i=0;i<=n-1;i+ +)"..... porque cambia el ciclo for aqui?? miren el codigo de este programa (que lo entiendo hasta el primer ciclo for, despues me pierdo...): #include<stdio.h> void main () { int vector[20]; int n,i,j,aux; printf ("Cuantos numeros quieres introducir:\n"); scanf ("%i",&n); printf ("introduce un numero:\n"); if(n>=20){ printf("ingrese menos de 20 numeros\n"); exit(1); } for (i=0;i<n;i++){ scanf ("%i",&vector[i]); } for (i=0;i<=n-1;i++){ for (j=i+1;j<n;j++){ if (vector[i]>vector[j]){ aux=vector[i]; vector[i]=vector[j]; vector[j]=aux; } } } for (i=0;i<n;i++){ printf ("%i\n",vector[i]); } } Porque se declaran varias variables? porque se coloca "n-1"? Porfiiis, ayudenme con esto... :) ¿??????????????????????????????????’’’’’’’’’’’’’’’’’’’’’’’’’’’’’¿

Upload: guadalupe-espinoza-garcia

Post on 23-Dec-2015

1 views

Category:

Documents


0 download

DESCRIPTION

metodo de la borbuja

TRANSCRIPT

Page 1: borbuja

Yo se que el metodo de la burbuja sirve para ordenar las posiciones de un vector de menor a mayor.. se que se hace una comparacion entre las posiciones y eso ps... Pero "como se codifica"? no lo se... osea, como se escribe en lenguaje c para que la compu lo entienda y eso..... Aunque ya he visto cositas de como es, no entiendo nada nada, porque en una parte del código, se coloca n-1, por ejemplo aqui "for (i=0;i<=n-1;i++)"..... porque cambia el ciclo for aqui?? miren el codigo de este programa (que lo entiendo hasta el primer ciclo for, despues me pierdo...): #include<stdio.h> void main () { int vector[20]; int n,i,j,aux; printf ("Cuantos numeros quieres introducir:\n"); scanf ("%i",&n); printf ("introduce un numero:\n"); if(n>=20){ printf("ingrese menos de 20 numeros\n"); exit(1); } for (i=0;i<n;i++){ scanf ("%i",&vector[i]); } for (i=0;i<=n-1;i++){ for (j=i+1;j<n;j++){ if (vector[i]>vector[j]){ aux=vector[i]; vector[i]=vector[j]; vector[j]=aux; } } } for (i=0;i<n;i++){ printf ("%i\n",vector[i]); } } 

Porque se declaran varias variables? porque se coloca "n-1"? Porfiiis, ayudenme con esto... :)

¿??????????????????????????????????’’’’’’’’’’’’’’’’’’’’’’’’’’’’’¿

 Pues aqui te dejo un nuevo codigo: El método de intercambio directo, conocido coloquialmente con el nombre de la burbuja, es el mas utilizado entre los estudiantes principiantes de computación;. La idea básica de este algoritmo consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que todos se encuentren ordenados. Se realizan (n-1) pasadas, transportando en cada de las mismas el menor o mayor elemento (según sea el caso) a su posicion ideal. 

Page 2: borbuja

Ejemplo: Se desean ordenarse las siguientes clave del arreglo A: 15, 67, 08, 16, 44, 27, 12, 35 

Primera pasada A[7] > A[8] 12>35 No hay intercambio A[6] > A[7] 27>12 Si hay intercambio A[5] > A[6] 44>12 Si hay intercambio A[4] > A[5] 16>12 Si hay intercambio A[3] > A[4] 08>12 No hay intercambio A[2] > A[3] 67>08 Si hay intercambio A[1] > A[2] 15>08 Si hay intercambio 

Luego de la primera pasada el arreglo queda de la siguiente forma: A: 08, 15, 67, 12, 16, 44, 27, 35 

Luego de la segunda pasada el arreglo queda de la siguiente forma: A:= 08, 12, 15, 67, 16, 27, 44, 35 

Hasta la septima pasada el arreglo queda ordenado: 08, 12, 15, 16, 27, 35, 44, 67 

Programa que lee un arreglo de 10 números y los ordena con el método de la burbuja de manera ascendente o descendente según se elija. 

#include<iostream> using namespace std; 

int ordenar(int[],int); int imprimir(int[]); 

int main() { int c,lista[9],ord; for(c=0;c<=9;c++) { cout<<"Numero "<<c+1<<": "; cin>>lista[c]; } cout<<"nAscendente 1nDescendente 2n--> Opción: "; cin>>ord; if(ord==1 || ord==2) { ordenar(lista,ord); imprimir(lista); } } 

int ordenar(int lista[],int ord) { int c1,c2,aux; for(c1=0;c1<=9;c1++) { for(c2=0;c2<9;c2++) 

Page 3: borbuja

{ if(ord==1) { if(lista[c2]>lista[c2+1]) { aux=lista[c2]; lista[c2]=lista[c2+1]; lista[c2+1]=aux; } } else { if(lista[c2]<lista[c2+1]) { aux=lista[c2]; lista[c2]=lista[c2+1]; lista[c2+1]=aux; } } } } return 0; } 

int imprimir(int lista[]) { int c; for(c=0;c<=9;c++) cout<<lista[c]<<" "; cin.get();cin.get(); } 

Y TU DUDA:coloca n-1, por ejemplo aqui "for (i=0;i<=n-1;i++)". n: variable; n-1= son las pasadas que se deben realizar para poder ordenar el vector.. FOR (es el vector) i= tamaño del vector donde i debe ser menor o igual a n-1 e i debe incrementarse... Espero que te sirva

Esel método de ordenamiento más conocido (y el mas infame), supopularidad deriva de su nombre pegadizo y susimplicidad. Sin embargo,para un ordenamiento de propósito general, esuno de los peores métodosjamás concebidos. El ordenamiento burbuja esuna método por intercambio,involucra repetidas comparaciones y, si esnecesario, intercambios deelementos adyacentes. Los elementos con como burbujas en un tanque deagua, donde cada burbuja busca su nivel.

A continuación les presento el algoritmo en Lenguaje C para ordenar un arreglo a través del método burbuja:

Page 4: borbuja

#include <stdlib.h>#include <stdio.h>

/*funcion que se encargara de ordenar el arreglo*/void burbuja(int *item, int cont) {    int i, j, ordenado = 0;    int temp;

    for (i = 1; i < cont; i++) {        for (j = cont-1; j >= i; j--) {            ordenado = 0;            if (item[j-1] > item[j]) {                temp = item[j-1];                item[j-1] = item[j];                item[j] = temp;                ordenado++;            }        }

        /*cuando la variable ordenado sea igual a 0          significara que el arreglo este ordenado          y no sera necesario seguir recorriendo el          arreglo para hacer comparaciones*/        if (ordenado == 0)        break;    }}

int main(void) {    int tam, n;

    /*definimos el tamaño del arreglo*/    printf("Ingrese el tamaño del arreglo:n");    scanf("%d", &tam);    int arreglo[tam];

    /*ingresamos valores al arreglo*/    printf("Ingrese valores al arreglo:n");    for (n = 0; n < tam; n++)        scanf("%d", &arreglo[n]);    printf("n");

    /*mostramos el arreglo original*/    printf("Arreglo Original:n");    for (n = 0; n < tam; n++)        printf("%d ", arreglo[n]);

Page 5: borbuja

    printf("n");

    /*hacemos el llamado a la funcion burbuja, a la cual      le pasamos como parametros el arreglo y el tamaño*/    burbuja(arreglo, tam);

    /*mostramos el arreglo ordenado*/    printf("Arreglo Ordenado:n");    for (n = 0; n < tam; n++)        printf("%d ", arreglo[n]);    printf("n");}

Para información adicional puede visitar mi weblog - http://jfsalazar.blogspot.com -

Programador: def.- máquina orgánica que convierte cafeína en código fuente