调用排序函数对二维数组排序

实现对二维数组 6X 5按列排序,即竖向从大到小或者从小到大排序。 main()实现数据输人,函数调用,数据格式输出, 数组排序用函数完成,排序方法不限,必须有调用排序函数的过程代码+注释

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#define n (int)6
#define m (int)5
//n行m列数组
void SortFun(int a[][m])
{
	int len = n*m; //等价于一维数组的大小
	int i, j;
	int b[n*m];
	//二维数组转成一维数组
	for (i = 0; i < len - 1; i++)
		for (j = 0; j < len - 1 - i; j++)
			b[i*m+j] = a[i][j];

	//一维数组从小到大冒泡排序
	int temp;
	for (i = 0; i < len - 1; i++)
	{
		for (j = 0; j < len - 1 - i; j++)
		{
			if (b[j] > b[j + 1]) 
			{
				temp = b[j];
				b[j] = b[j + 1];
				b[j + 1] = temp;
			}
		}
	}
	//将b的数据按列赋值给a
	for (int i = 0;i< len; i++)
	{
		int col = i/n;
		int row = i%n;
		a[row][col] = b[i];
	}



}

int main()
{
	int a[6][5]={22,33,11,3,4,5,1,2,7,9,10,32,31,34,35,38,39,40,50,48,42,41,45,56,54,52,59,90,66,87};
	printf("排序前:\n");
	for (int i = 0; i < 6; i++)
	{
		for (int j = 0; j < 5;j++)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	SortFun(a);
	printf("排序后:\n");
	for (int i = 0; i < 6; i++)
	{
		for (int j = 0; j < 5;j++)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}

	getchar();
	getchar();
	return 0;
}

 

代码如下,如有帮助,请采纳一下,谢谢。

#include <stdio.h>
#define n (int)6
#define m (int)5
//n行m列数组
void SortFun(int a[][m])
{
	int len = n*m; //等价于一维数组的大小
	int i, j;
	int b[n*m];
	//二维数组转成一维数组
	for (i = 0; i < len - 1; i++)
		for (j = 0; j < len - 1 - i; j++)
			b[i*m+j] = a[i][j];

	//一维数组从小到大冒泡排序
	int temp;
	for (i = 0; i < len - 1; i++)
	{
		for (j = 0; j < len - 1 - i; j++)
		{
			if (b[j] > b[j + 1]) 
			{
				temp = b[j];
				b[j] = b[j + 1];
				b[j + 1] = temp;
			}
		}
	}
	//将b的数据按列赋值给a
	for (int i = 0;i< len; i++)
	{
		int col = i/n;
		int row = i%n;
		a[row][col] = b[i];
	}



}

int main()
{
	int a[6][5]={22,33,11,3,4,5,1,2,7,9,10,32,31,34,35,38,39,40,50,48,42,41,45,56,54,52,59,90,66,87};
	printf("排序前:\n");
	for (int i = 0; i < 6; i++)
	{
		for (int j = 0; j < 5;j++)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}
	SortFun(a);
	printf("排序后:\n");
	for (int i = 0; i < 6; i++)
	{
		for (int j = 0; j < 5;j++)
		{
			printf("%d ",a[i][j]);
		}
		printf("\n");
	}

	getchar();
	getchar();
	return 0;
}