[ayuda][c++]ordenar arreglo

Iniciado por dragon_hack, 30 Julio 2010, 16:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

dragon_hack

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

Tutorial 1 100%
Tutorial 2 56%
Tutorial 3 23%

N3r0

#1
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.


cbug

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:

Código (cpp) [Seleccionar]
for(int i = 0; i < n - 1; i++)
    for(int j = 0; j < n; j++)
        If(...)
           swap(...,...)

dragon_hack

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

Tutorial 1 100%
Tutorial 2 56%
Tutorial 3 23%

Littlehorse

An expert is a man who has made all the mistakes which can be made, in a very narrow field.