Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: UmbraNoche en 25 Octubre 2015, 03:31 am



Título: Ordenar un arreglo de dos dimensiones aplicando el ordenamiento burbuja
Publicado por: UmbraNoche en 25 Octubre 2015, 03:31 am
Buenas gente aquí les dejo un código de una de las muchas formas de cómo aplicar el ordenamiento burbuja a un arreglo de dos dimensiones.

Código
  1.    #include <iostream>
  2.    #include <cstdlib>
  3.    #include <ctime>
  4.  
  5.    using namespace std;
  6.  
  7.    void rellenarArreglos(int a[10][10]);
  8.    void desplegarArreglo(int a[10][10]);
  9.    void ordenarArreglo(int a[10][10]);
  10.  
  11.    int main(){
  12.  
  13.        int arreglo1[10][10];
  14.  
  15.        cout << "Arreglo1\n\n";
  16.        rellenarArreglos(arreglo1);
  17.        ordenarArreglo(arreglo1);
  18.        desplegarArreglo(arreglo1);
  19.  
  20.  
  21.        system("pause");
  22.        return 0;
  23.    }
  24.  
  25.    void rellenarArreglos(int a[10][10]){
  26.  
  27.        srand(time(0));
  28.  
  29.        for(int i = 0; i < 10; i++){
  30.            for(int j = 0; j < 10; j++)
  31.                a[i][j] = (1 + rand() % 1000);
  32.        }
  33.  
  34.    }
  35.  
  36.    void desplegarArreglo(int a[10][10]){
  37.  
  38.        for(int c = 0; c < 10; c++){
  39.            for(int b = 0; b < 10; b++)
  40.                cout << c[a][b] << "\t";
  41.                cout << endl;
  42.        }
  43.  
  44.    }
  45.  
  46.    void ordenarArreglo(int a[10][10]){
  47.  
  48.        int k = 0;
  49.        int arreglo[100];
  50.  
  51.        //Convertir el arreglo de dos dimensiones en uno de una sola dimension.
  52.        for(int fila = 0; fila < 10; fila++){
  53.            for(int col = 0; col < 10; col++){
  54.                arreglo[k] = a[fila][col];
  55.                k++;
  56.            }
  57.        }
  58.  
  59.  
  60.        //Aplicación del Ordenamiento Burbuja.
  61.        for(int f = 1; f < 100; f++){
  62.            for(int c = 0; c < 100; c++){
  63.                if(arreglo[c] > arreglo[c+1]){
  64.                    int temp = arreglo[c];
  65.                    arreglo[c] = arreglo[c+1];
  66.                    arreglo[c+1] = temp;
  67.  
  68.                }
  69.            }
  70.        }
  71.  
  72.        k = 0;
  73.  
  74.        //Convertir el arreglo de una dimensión en una de dos dimensiones
  75.        //como anteriormente estaba.
  76.        for(int f = 0; f < 10; f++){
  77.            for(int c = 0; c < 10; c++){
  78.                a[f][c] = arreglo[k];
  79.                k++;
  80.            }
  81.        }
  82.  
  83.    }
  84.