Sunteți pe pagina 1din 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 cdigo, 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 mtodo de intercambio directo, conocido coloquialmente con el nombre de la burbuja, es el mas
utilizado entre los estudiantes principiantes de computacin;.
La idea bsica 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
(segn sea el caso) a su posicion ideal.
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 nmeros y los ordena con el mtodo de la burbuja de manera
ascendente o descendente segn 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--> Opcin: "; 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++)
{
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= tamao del vector donde i debe ser menor o igual a n-1 e i debe
incrementarse...
Espero que te sirva

Esel mtodo de ordenamiento ms conocido (y el mas infame), supopularidad deriva de su


nombre pegadizo y susimplicidad. Sin embargo,para un ordenamiento de propsito general,
esuno de los peores mtodosjams concebidos. El ordenamiento burbuja esuna mtodo 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 continuacin les presento el algoritmo en Lenguaje C para ordenar un arreglo a travs del
mtodo burbuja:

#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 tamao del arreglo*/
printf("Ingrese el tamao 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]);
printf("n");
/*hacemos el llamado a la funcion burbuja, a la cual
le pasamos como parametros el arreglo y el tamao*/
burbuja(arreglo, tam);
/*mostramos el arreglo ordenado*/
printf("Arreglo Ordenado:n");
for (n = 0; n < tam; n++)
printf("%d ", arreglo[n]);
printf("n");
}
Para informacin adicional puede visitar mi weblog - http://jfsalazar.blogspot.com -

Programador:
def.- mquina orgnica que convierte cafena en cdigo fuente

S-ar putea să vă placă și