• Domingo 28 de Abril de 2024, 21:39

Autor Tema:  Ordenamiento De Matrices  (Leído 1973 veces)

Dunadan

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Ordenamiento De Matrices
« en: Viernes 19 de Agosto de 2005, 14:59 »
0
Buenas, estuve viendo y me di cuenta que el ordenamiento de vectores es diferente al ordenamiento de matrices(tal vez esté errado).  SI alguien podría darme una mano de como se ordenan, algún link ya que no encontré o manual se lo agradecería muchísimo.  Gracias de antemano.

Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas.  En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"

[size=109]H.P. Lovecraft "El Ceremonial"[/size]

hidaki

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Ordenamiento De Matrices
« Respuesta #1 en: Sábado 20 de Agosto de 2005, 05:42 »
0
no entiendo, que queres ordenar? podes ser más específico? que es eso de que no son iguales????      ***Hidaki

Dunadan

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Ordenamiento De Matrices
« Respuesta #2 en: Domingo 21 de Agosto de 2005, 01:12 »
0
Disculpá que no especifiqué bien, acá voy con un ejemplo ya que intenté ordenar pero llegué a un punto en el cual no supe que hacer.

Hice un programa que cargaba una matriz 4x4, ordenaba las filas primero y dps las columnas(por el método shell), que fue lo que se me ocurrió y es lo más básico.  La matriz desordendo era así:
Código: Text
  1.  
  2. 6 0 2 0
  3. 6 7 5 5
  4. 8 7 4 8
  5. 1 9 2 0
  6.  
  7.  

después de ordenar...
Código: Text
  1.            
  2. 0 0 1 2
  3. 0 2 6 6
  4. 4 5 6 7
  5. 5 8 8 9
  6.  
  7.  

Y de esta manera no queda ordenado como yo quiero, o sea de la siguiente manera, para dar un ejemplo:
Código: Text
  1.  
  2. 1 9 5                      1 2 3
  3. 3 6 8         a esto    4 5 6  
  4. 2 4 7                      7 8 9
  5.  
  6.  

falta una conexión entre ls filas que la verdad no pude lograr, aunque tampoco mucho lo intenté.  El código no lo adjunto ya que es largo y simple a la vez, solo muestra y "ordena" la matriz.  Lo que quería era si hay métodos como lo hay para ordenar vectores para las matrices, y si alguien tiene documentación sobre estos en el cosa de que existieran.  Espero haber aclarado las dudas sobre mi pregunta.

Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas.  En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"

[size=109]H.P. Lovecraft "El Ceremonial"[/size]

ragnarok

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Ordenamiento De Matrices
« Respuesta #3 en: Domingo 21 de Agosto de 2005, 04:21 »
0
Tal y como lo quieres ordenar es como si ordenaras un vector, para eso lo que deberías hacer es tratar la matriz como un vector, siendo de mxn después del elemento (0,n) irá el (1,0) y así sucesivamente.

Si no te apañas para tratar la matriz como un vector, puedes copiarla a un vector, ordenar el vector y restaurar la matriz desde el vector, que es una chapuza por la efectividad pero funciona igual.

Mi consejo es que trates la matriz como un vector porque verás que si lo piensas un poco no es tan dificil adaptar el algoritmo de vectores que suelas utilizar y prefieras a tu matriz.

rir3760

  • Miembro activo
  • **
  • Mensajes: 37
    • Ver Perfil
Re: Ordenamiento De Matrices
« Respuesta #4 en: Domingo 21 de Agosto de 2005, 16:53 »
0
Como ya te indico ragnarok solo cambia la forma en la que se accede a cada elemento, en un array de tipo int:
Código: Text
  1. if (a[i] > a[j]){
  2.    /* Intercambio */
  3.    
  4.    temp = a[i];
  5.    a[i] = a[j];
  6.    a[j] = temp;
  7. }
  8.  

Con un array de arrays de tipo int tienes que descomponer los indices en filas y columnas, en lugar de utilizar a utilizas:
 a[i / COLS][i % COLS]
donde COLS es una macro que define el numero de columnas:
Código: Text
  1. #define FILAS 4 /* Numero de filas    */
  2. #define COLS  6 /* Numero de columnas */
  3.  
  4. /* mas codigo ... */
  5.  
  6. if (a[i / COLS][i % COLS] > a[j / COLS][j % COLS]){
  7.    /* Intercambio */
  8.    
  9.    temp = a[i / COLS][i % COLS];
  10.    a[i / COLS][i % COLS] = a[j / COLS][j % COLS];
  11.    a[j / COLS][j % COLS] = temp;
  12. }
  13.  

Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz