二维数组的排序
Posted zerohua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组的排序相关的知识,希望对你有一定的参考价值。
题目
/* 实验内容:
输入是16个整数,存放到4*4的二维数组中,用冒泡法按从大到小的顺序进行排序,
然后输出。要求输入、排序、输出各个环节都要用到指向数组的指针,
其中排序环节交换数据要求用自定义的swap(int *p1,int *p2)函数实现。*/
切入点
知识点:其实n维数组都是以一位数组的方式存储的,所以我们就可以用一维数组的方法法解决n维数组的排序问题
解决方案
#include <stdio.h>
void swap(int *p1,int *p2);
int main()
{
int num[4][4];
int (*p)[4]=num;
int col,row;
//输入
for(row=0;row<4;row++)
{
for(col=0;col<4;col++)
{
scanf("%d",(*(p+row)+col));
}
}
/*
for(int i=0;i<16;i++)
{
printf("%d ",*(*num+i));
}*/
//打印输入
printf("输入结果:
");
for( row=0;row<4;row++)
{
for(int col=0;col<4;col++)
{
printf("%d ",*(*(num+row)+col) );
}
printf("
");
}
//排序
for(int i=0;i<15;i++)
for(int j=0;j<15-i;j++)
{
// < 则是从大到小
if( *(*num+j) > *(*num+j+1))
swap((*num+j),(*num+j+1));
}
printf("输出结果:
");
for( row=0;row<4;row++)
{
for(int col=0;col<4;col++)
{
printf("%d ",*(*(num+row)+col) );
}
printf("
");
}
return 0;
}
void swap(int *p1,int *p2)
{
int p;
p = *p1;
*p1 = *p2;
*p2 = p;
}
以上是关于二维数组的排序的主要内容,如果未能解决你的问题,请参考以下文章
C 语言二级指针作为输入 ( 二维数组 | 二维数组遍历 | 二维数组排序 )
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否函数该整数。 ```java publi(代码