C语言怎样对二维数组中每个元素进行选择排序
答案:3 悬赏:40
解决时间 2021-11-25 06:46
- 提问者网友:芷芹
- 2021-11-24 23:03
C语言怎样对二维数组中每个元素进行选择排序
最佳答案
- 二级知识专家网友:甜野猫
- 2021-11-24 23:18
1)核心思想是每行按顺序排列好,假定从小到大,然后,每列从小到大排序
2)假设数组为a[i_max][j_max]
核心代码
for(i=0;i<i_max;i++)
for(j=0;j<j_max;j++)
for(k=j+1;k<j_max-1;k++)
if(a[i][k]<a[i][j])
{ t=a[i][j];
a[i][j]=a[i][k];
a[i][k]=t;
}
for(j=0;j<j_max;j++)
for(i=0;i<i_max;i++)
for(k=i+1;k<i_max-1;k++)
if(a[k][j]<a[i][j])
{ t=a[i][j];
a[i][j]=a[k][j];
a[k][j]=t;
}
望采纳
2)假设数组为a[i_max][j_max]
核心代码
for(i=0;i<i_max;i++)
for(j=0;j<j_max;j++)
for(k=j+1;k<j_max-1;k++)
if(a[i][k]<a[i][j])
{ t=a[i][j];
a[i][j]=a[i][k];
a[i][k]=t;
}
for(j=0;j<j_max;j++)
for(i=0;i<i_max;i++)
for(k=i+1;k<i_max-1;k++)
if(a[k][j]<a[i][j])
{ t=a[i][j];
a[i][j]=a[k][j];
a[k][j]=t;
}
望采纳
全部回答
- 1楼网友:强势废物
- 2021-11-25 01:19
#include <stdio.h>
#include "stdlib.h"
#include "time.h"
int main(int argc,char *argv[]){
int a[5][8],i,j,k,t,*p;
printf("排序前:\n");
srand((unsigned)time(NULL));
for(i=0;i<5;i++){//为二维数组赋值
for(j=0;j<8;printf("%3d",a[i][j++]=rand()%100));
printf("\n");
}
printf("排序后:\n");
p=(int *)a;//降为一维,这样排序简单
for(t=i=0;i<40;i++){//选择法排序
for(k=i,j=k+1;j<40;j++)
if(p[k]>p[j])
k=j;
if(k!=i)
j=p[k],p[k]=p[i],p[i]=j;
printf(++t%8 ? "%3d" : "%3d\n",p[i]);
}
return 0;
}
- 2楼网友:浪者不回头
- 2021-11-25 00:22
用一个两重循环就可以了:
#include <stdio.h>
void main()
{
int a[3][4] = {0}, row, col;
printf("请输入数组元素的值(3行4列): \n");
for (row=0; row<3; row++)
for (col=0; col<4; col++)
scanf("%d", &a[row][col]);
printf("您输入的数组为:\n");
for (row=0; row<3; row++)
{
//输出当前行的元素
for (col=0; col<4; col++)
printf("%3d", a[row][col]);
//换行
printf("\n");
}
}
//测试结果:
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯