[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