tengo un problema grande al no entender la estrutura del metodo de ordenamiento "burbuja" me podrian ayudar en algo? vean el arreglo que trato de ordenar.
#include <iostream>
using namespace std;
int main()
{
const int tama = 10;
int a[tama] = {5,50,20,10,10,8,3,2,6,1};
//imprimos el arreglo con los valores iniciales
cout<<"arreglo antes de ordenar......"<<endl;
cout<<endl;
cout<<endl;
for (int j =0; j <tama; j++)
cout<< j << a[j] <<endl;
cout<<endl;
cout<<endl;
cout<<"arreglo despues de ordenar..........."<<endl;
cout<<endl;
cout<<endl;
for (int i = 1; i <tama; i++ ){
for (j = 0; j <tama - i ; j++){
if ( a[j]> a[j + 1]) {
temp = a[j];
a[j] = a[j + 1] ;
a[j + 1] = temp;
}
}
}
for (j =0; j <tama; j++) {
cout<< j << a[ j ] <<endl;
}
//pausamos despues de que muestre el resultado el programa
system("pause");
return 0;
} //fin del programa
Hola como estas mira tenes dos problemas por empezar en el ordenamiento utilizas una variable llamada temp que no declaras en ningun lado y segundo en el for
for (j = 0; j <tama - i ; j++)
te falto el int
for (int j = 0; j <tama - i ; j++)
cuando declaras la variable en la sección de inicializacion de una estructura for su alcanse esta acotado al for.
aca esta modificado y funciona:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int temp=0;
const int tama = 10;
int a[tama] ={5,50,20,10,10,8,3,2,6,1};
//imprimos el arreglo con los valores iniciales
cout<<"arreglo antes de ordenar......"<<endl;
cout<<endl;
cout<<endl;
for (int j =0; j <tama; j++) {
cout<<j<<" "<<a[j]<<endl;
}
cout<<endl;
cout<<"arreglo despues de ordenar..........."<<endl;
cout<<endl;
cout<<endl;
for (int i = 0; i <tama; i++ ){
for (int j = 0; j <(tama- i); j++){
if ( a[j]> a[j + 1]) {
temp = a[j];
a[j] = a[j + 1] ;
a[j + 1] = temp;
}
}
}
for (int j =0; j <tama; j++) {
cout<<j<<" "<<a[j]<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Saludos Cualquier otro problema no dudes en consultar.
En realidad no sé si funciona, pero fijate que analizarás un elemento que no corresponde, ejemplo
i = 1, luego j se comparará con i = 1.
En realidad:
for(int i = 0; i < n - 1; i++)
for(int j = 0; j < n; j++)
If(...)
swap(...,...)
muy interesantes sus aclaraciones, pero no me respondieron mi duda principal: como funciona el metodo de la burbuja? y la sintaxis para este caso cual seria???
PD: gracias por el arreglo del code ;D
Burbuja (http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja)
burbuja C site:foro.elhacker.net (http://www.google.com.ar/#hl=es&source=hp&q=burbuja+C+site%3Aforo.elhacker.net&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=44521399c06f7275)
:D
Saludos!