[ Foro de Pascal ]

ordenar una matriz

23-Mar-2014 19:17
Invitado (luis poveda)
4 Respuestas

hola a todos soy nuevo en el foro y estudio analisis de sistemas pero inicio a penas y me encuentro ya con problemas.

si alguien o el profesor puede ayudarme a desarrollar un programa que permita ordenar una matriz de menor a mayor sobre si misma es decir no se permite utilizar vector auxiliar para dicho ordenamiento, agradezco a todos su apoyo para continuar y no desanimarme tan rapido pues a pesar de haber visto el tema de matrices este ejercicio no tengo ni idea, gracias


23-Mar-2014 20:06
Nacho Cabanes (+31)

Debes estar mirando la versión antigua del curso. Mira aquí el apartado 4.1.7:

http://www.nachocabanes.com/pascal/cupas5/cupas04.php


23-Mar-2014 21:18
Invitado (luis poveda)

hola profesor , no entiendo lo que me sugieres, he entrado a ese apartado pero alli esta el ordenamiento para un vector y no para una matriz que es mi pregunta, lo que menciona el ejercicio es que no debe hacerse la ordenacion de la matriz utilizando un vector auxiliar, caso en el cual si creo seria apropiado el apartado que me mencionas de tu curso. gracias por tu ayuda y ojala puedas hecharme una mano


24-Mar-2014 01:08
Nacho Cabanes (+31)

Un vector es un caso particular de matriz (unidimensional).

Si no das más detalles, lo normal es suponer que te refieres a una matriz unidimensional, y lo tienes resuelto en el apartado 4.1.7 de la nueva versión de curso.

Si en tu caso se trata de una matriz bidimensional (o n-dimensional), la solución más sencilla puede ser "linealizarla" al vuelo, calculando la posición de una matriz 1xn que correspondería a tu matriz de mxm. Por ejemplo, si tu matriz es de 3x3 y debes ordenarla por filas, puedes tratarla como si fuera un vector de 1x9, de modo que en la primera fila tendrías los elementos 1, 2 y 3, en la segunda fila tendrías los 4, 5 y 6, y en la tercera fila estarían 7, 8 y 9. En ese caso ya podrías aplicar un algoritmo genérico de ordenación unidimensional, como el de burbuja y otros muchos.

Sólo necesitarías pararte a pensar como convertir de coordenadas bidimensionales (o n-dimensionales, insisto en que no has dado detalles) a las coordenadas unidimensionales que espera el algoritmo. Para una matriz bidimensional podría ser:

 
posicionLineal = (fila-1) * elementosEnCadaFila + columna
 


de modo que el tercer elemento de la segunda fila de una matriz 3x3 sería el (2-1)*3 + 3 = 6.

De igual modo, es fácil pasar de la coordenada lineal a la bidimensional, para saber dónde está cada elemento que debes comparar e intercambiar de tu matriz.


24-Mar-2014 11:26
Invitado (luis poveda)

efectivamente era lo que necesitaba , gracias profesor.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)