Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: UmbraNoche en 14 Febrero 2015, 17:26 PM

Título: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?
Publicado por: UmbraNoche en 14 Febrero 2015, 17:26 PM
Buenas gente, les escribo para saber si me pueden dar una mano, en cómo ordenar un arreglo de 15x15 que contiene números aleatorios del 1 al 999 aplicando el ordenamiento burbuja. He estado quebrandome la cabeza pero no he tenido éxito. Aquí les dejo el código.

Gracias de antemano.

Código (cpp) [Seleccionar]
const int Fil = 15;
const int Col = 15;

srand(time(NULL));

        cout << setw(50) << "Matriz con numeros del 1 al 999\n\n";

        for(int fila = 0; fila < Fil; fila++){
            for(int columna = 0; columna < Col; columna++)
                matriz[fila][columna] = 1 + rand()% 999;
        }

        for(int f = 0; f < Fil; f++){
            for(int c = 0; c < Col; c++)
                cout << matriz[f][c] << " ";

                cout << endl;
        }

        cout << "Matriz Ordenada\n\n";

        int temp;

        for(int fila = 0; fila < Fil-1; fila ++){
            for(int columna = 0; columna < Col-1; columna++){
                for(int FilaAux = 0; FilaAux < Fil; FilaAux++){
                    for(int ColumnaAux = 0; ColumnaAux < Col; ColumnaAux++){
                            if(matriz[fila][columna] > matriz[FilaAux+1][ColumnaAux+1]){
                                temp = matriz[FilaAux][ColumnaAux];
                                matriz[fila][columna] = matriz[FilaAux+1][ColumnaAux+1];
                                matriz[FilaAux+1][ColumnaAux+1] = temp;
                            }
Título: Re: Cómo ordenar un arreglo bidimensional aplicando ordenamiento burbuja?
Publicado por: engel lex en 14 Febrero 2015, 17:36 PM
mi reocmendación... el lugar de hacer un recorrido raro para poder organizar, tomalo como si fuera un arreglo de una sola dimensión, ya que burbuja está hecho para eso y no para matrices... como haces esto?

el recorrido
Código (cpp) [Seleccionar]
for(i=0; i<Fil*Col-1; i++)

y el elemento actual es
Código (cpp) [Seleccionar]
actual = matriz[i/Fil][i%Col];
k = i+1;//el siguiente valor, usado para comparar
siguiente = matriz[k/Fil][K%Col]


a ojos del ciclo eso ahora es un array de una sola dimensión y puedes aplicar comparaciones basicas sin mayor complicación