BURBUJA.c



// ORDENA UNA MATRIZ UTILIZANDO EL ALGORITMO DE BURBUJA

#define DIM 3

// ATENCION, si el puntero no tiene valor darA "SEGMENTATION FAULT"
// Ordena los datos de una matriz utilizando el mEtodo de burbuja

main()
{
	int A[DIM][DIM];
	PideDatos(A);
	printf("Matriz no ordenada...\n"); Muestra(A);
	Ordena(A);
	printf("Matriz ordenada...\n"); Muestra(A);
}

Ordena(int A[][DIM])
{
	int r, r1, c, c1, c_c;
	for (r = 0; r < DIM; r++)
		for (c = 0; c < DIM; c++)
		{
			c_c = c;
			for (r1 = r; r1 < DIM; r1++)
			{
				for (c1 = c_c; c1 < DIM; c1++)
					if (A[r][c] > A[r1][c1]) swap(&A[r][c], &A[r1][c1]);
				c_c = 0;
			}
		}
}

swap(int *x, int *y)
{
	int z = *y;
	*y = *x;
	*x = z;
}

Muestra(int A[][DIM])
{
	int r, c;
	
	for (r = 0; r < DIM; r++)
	{
		printf("\n");
		for (c = 0; c < DIM; c++)
			printf("\t%d", A[r][c]);
	}
	printf("\n");
}

PideDatos(int A[][DIM])
{
	int r, c;
	
	for (r = 0; r < DIM; r++)
		for (c = 0; c < DIM; c++)
			{ printf("A[%d][%d]= ", r, c); scanf("%d", &A[r][c]); }
}