Foro de elhacker.net

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
  1. const int Fil = 15;
  2. const int Col = 15;
  3.  
  4. srand(time(NULL));
  5.  
  6.        cout << setw(50) << "Matriz con numeros del 1 al 999\n\n";
  7.  
  8.        for(int fila = 0; fila < Fil; fila++){
  9.            for(int columna = 0; columna < Col; columna++)
  10.                matriz[fila][columna] = 1 + rand()% 999;
  11.        }
  12.  
  13.        for(int f = 0; f < Fil; f++){
  14.            for(int c = 0; c < Col; c++)
  15.                cout << matriz[f][c] << " ";
  16.  
  17.                cout << endl;
  18.        }
  19.  
  20.        cout << "Matriz Ordenada\n\n";
  21.  
  22.        int temp;
  23.  
  24.        for(int fila = 0; fila < Fil-1; fila ++){
  25.            for(int columna = 0; columna < Col-1; columna++){
  26.                for(int FilaAux = 0; FilaAux < Fil; FilaAux++){
  27.                    for(int ColumnaAux = 0; ColumnaAux < Col; ColumnaAux++){
  28.                            if(matriz[fila][columna] > matriz[FilaAux+1][ColumnaAux+1]){
  29.                                temp = matriz[FilaAux][ColumnaAux];
  30.                                matriz[fila][columna] = matriz[FilaAux+1][ColumnaAux+1];
  31.                                matriz[FilaAux+1][ColumnaAux+1] = temp;
  32.                            }


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
  1. for(i=0; i<Fil*Col-1; i++)

y el elemento actual es
Código
  1. actual = matriz[i/Fil][i%Col];
  2. k = i+1;//el siguiente valor, usado para comparar
  3. 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