[C con Clase] Ordenar filas de matriz, referencia ultimo valor de la fila.
Jorge Vega Sanchez
memmaker650 en gmail.com
Jue Sep 2 17:35:35 CEST 2010
Bueno el título puede resultad un tanto confuso pero no sé como explicarlo.
Estoy trabajando con una matriz, y lo que quiero es ordenar las filas de menor a mayor teniendo como referencia la ultima posicion de las filas de la matriz.
La ordenación es sencilla, he elegido el algoritmo de la burbuja y lo estoy intentando adecuar para trabajar con arrays en vez de con simples posiciones.
Me surge una duda: en el algoritmo comparo posiciones pero para intercambiar vectores no sé como hacerlo todo de golpe, es decir no teniendo que ir pasnado posición a posicion.
Pongo el código, primero va el algoritmo de la burbuja normal para una array y abajo la versión para matrices. No funciona la version para matrices porque no se como copiar directamente una fila en otro lado.
NOTA:
En mi algoritmo la fila 24 la usa como temporal para hacer el SWAP en el algoritmo.
void BubbleSort(int *A, int N)
{
int i, j;
int temp;
for (i = N-1; i > 0; i--)
{
for (j = 0; j < i; j++)
{
if (A[j] > A[j+1])
{
temp = A[j];
A[j] = A[j+1]; --> Aquí movemos solo "celdas" del array. No hay ningun problema. ¿ Con un vector multidimensional ?
A[j+1] = temp;
}
}
}
}
void BubbleSort(int *A, int N) // Algoritmo MODIFICADO.
{
int i, j;
for (i = N-1; i > 0; i--)
{
for (j = 0; j < i; j++)
{
if (A[j][5] > A[j+1][5])
{
strcpy(A[j],A[24]);
strcpy(A[j+1],A[j]); ---> Aqui radica el problema
strcpy(A[24],A[j+1]);
}
}
}
} // FIN ALGORITMO MODIFICADO.
Más información sobre la lista de distribución Cconclase