你好,我先说一下算法吧,先把二维数组赋值到一个一维数组,然后利用for循环依次把第一个数和其他数依次比较,每次比较把较大数放在后面,一次循环下来数组中最大的数就在最后面了,做了(n-1)*(n -1)此比较换位后,数组就是升序数组了,然后循序输出数组值就OK了。
#include
void main()
{
int i;
int j;
int n;
int temp;
int a[3][4] = {12,3,54,6,7,9,2,15,27,45,11,99};
int b[12];
n = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++, n++)
b[n] = a[i][j];
for (i = 0; i < 11; i++)
{
for (n = 0; n < 11; n++)
{
if (b[n] > b[n + 1])
{
temp = b[n];
b[n] = b[n + 1];
b[n + 1] = temp;
}
}
}
for (n = 0; n < 12; n++)
printf("%d,", b[n]);
printf("\n");
}
#include
void main()
{
int i,j,temp;
int a[3][4]={2,3,6,4,3,4,7,0,8,4,1,2};
for(i=0;i<12;i++) //冒泡
for(j=0;j<12;j++)
if(a[j/4][j%4]>a[(j+1)/4][(j+1)%4]) //看起来有点复杂,其实就是 12个数分成3行4列,对应的行数就是j/4,列数j%4,+1那个就是它下一个数
{
temp=a[j/4][j%4];
a[j/4][j%4]=a[(j+1)/4][(j+1)%4];
a[(j+1)/4][(j+1)%4]=temp;
}
for(i=0;i<3;i++) //打印
for(j=0;j<4;j++)
printf("%d\n",a[i][j]);
}
//没删,以后有用的着的地方你可以再看看
#include
void Sort(int *a,int x,int y) /*2维数组排序函数,为了让函数更通用,不止限于“三行四列”的二维数组,传入3个参数,a为数组名,x行数,y列数*/
{
int m=x*y; //m为数据总个数
int temp; //临时保存交换空间
for(int i=0;i
{
temp=a[j];a[j]=a[j+1];a[j+1]=temp;
}
}
void PrintData(int *a,int x,int y) //2维数组的通用打印程序
{
for(int i=0;i
}
void main() //主要拿来测试上面两个函数
{
int a[3][4]={2,3,6,4,3,4,7,0,8,4,1,2};
int b[4][4]={5,4,5,3,7,8,2,1,0,2,9,1,2,6,8,7};
Sort((int*)a,3,4);
Sort((int*)b,4,4);
PrintData((int *)a,3,4);
printf("\nNext:\n");
PrintData((int *)b,4,4);
}
排序撒,排好序就可以了。