C implements three-dimensional array sorting

#include <stdio.h>

int test01()
{
    
    
	int a2[2][10];//a2是一个二维数组,这个二维数组中包含两个一维数组,a2[0],a2[1],a2[0]和a2[1]两个数组是连续的
	int index = 0;
	int i, j;
	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 10; j++)
		{
    
    
			a2[i][j] = index++;
		}
	}//遍历一个二维数组,把数组中每个成员赋值

	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 10; j++)
		{
    
    
			printf("%d\n", a2[i][j]);
		}
	}//遍历一个二维数组,把数组中每个成员赋值
	printf("%lu, %lu, %lu\n", sizeof(a2), sizeof(a2[0]), sizeof(a2[0][0]));
	//80  40 4
	
	printf("%p, %p, %p\n", a2, a2[0], &a2[0][0]);

	int a3[][5] = {
    
     {
    
     1, 2, 3, 4, 5 }, {
    
     6, 7, 8, 9, 10 }};
	
	for (i = 0; i < sizeof(a3) / sizeof(a3[0]); i++)
	{
    
    
		for (j = 0; j < sizeof(a3[0]) / sizeof(a3[0][0]); j++)
		{
    
    
			printf("a3[%d][%d] = %d\t", i, j, a3[i][j]);
		}
		printf("\n");
	}

	return 0;
}

int test02()
{
    
    
	int a[2][4][5];//这是一个三维数组,有2个二维数组,2个二维数组的数组名是a[0],a[1]
	int index = 0;
	int i, j, k;
	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 4; j++)
		{
    
    
			for (k = 0; k < 5; k++)
			{
    
    
				a[i][j][k] = index++;
			}
		}
	}

	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 4; j++)
		{
    
    
			for (k = 0; k < 5; k++)
			{
    
    
				printf("a[%d][%d][%d] = %d  ,", i, j,k, a[i][j][k]);
			}
			printf("\t");
		}
		printf("\n");
	}

return 0;
}
//三维数组排序:将其先转换为一维数组,将一维数组排序,排序完成后再转换为三维数组
int main(int argc, const char *argv[])
{
    
    
	printf("*********************************\n");
	test01();
	printf("*********************************\n");
	
	printf("\n\n");
	
	printf("*********************************\n");
	test02();
	printf("*********************************\n");

	
	int a[2][3][5] = {
    
     
						{
    
     {
    
    32,56,21,74,32}, 
						{
    
    56,31,897,93,22}, 
						{
    
    47,63,96,333,99} }, 
						{
    
     {
    
    666,888,35,97,2},
						{
    
    654,87,13,67,3}, 
						{
    
    67,56,40,34,10} } 
						};

	int b[30] = {
    
     0 };
	int i, j, k;
	int index = 0;
	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 3; j++)
		{
    
    
			for (k = 0; k < 5; k++)
			{
    
    
				b[index] = a[i][j][k];
				index++;
			}
		}
	}

	for (i = 0; i < 30; i++)
	{
    
    
		for (j = 1; j < 30 - i; j++)
		{
    
    
			if (b[j - 1] > b[j])
			{
    
    
				int tmp = b[j];
				b[j] = b[j - 1];
				b[j - 1] = tmp;
			}
		}
	}

	index = 0;
	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 3; j++)
		{
    
    
			for (k = 0; k < 5; k++)
			{
    
    
				a[i][j][k] = b[index];
				index++;
			}
		}
	}

	for (i = 0; i < 2; i++)
	{
    
    
		for (j = 0; j < 3; j++)
		{
    
    
			for (k = 0; k < 5; k++)
			{
    
    
				printf("a[%d][%d][%d] = %d\n", i, j, k, a[i][j][k]);
			}
		}
	}
	return 0;
}

Guess you like

Origin blog.csdn.net/zxy131072/article/details/108494084