C/C++ 如何实现按二维数组其中一列的元素大小为标准对整个数组的行进行排序? 10

C/C++如何实现按二维数组其中一列的元素大小为标准对整个数组的行进行排序?表达的很不清楚,下面给出实例:原始数组:158783465按第一列降序排序之后的结果:7834... C/C++ 如何实现按二维数组其中一列的元素大小为标准对整个数组的行进行排序?
表达的很不清楚,下面给出实例:
原始数组:
1 5 8
7 8 3
4 6 5
按第一列降序排序之后的结果:
7 8 3
4 6 5
1 5 8
写出代码
并说明这么做每一步原因
展开
 我来答
cdyzxy
2017-12-21 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3778万
展开全部

就好比每个学生3门成绩,对英语成绩进行排序。这在数据库管理中叫索引排序

#include<stdio.h>
#define N 3
#define M 3
void main() { int a[N][M]={ {1,5,8},{7,8,3},{4,6,5} },i,j,k,index[N]; 
  for ( i=0;i<N;i++ ) index[i]=i; //index数组记录原始顺序
  for ( i=0;i<N-1;i++ )
    for ( j=i+1;j<N;j++ ) //根据第0列比大小的结果交换index的顺序,即用索引排序
      if ( a[index[i]][0]<a[index[j]][0] ) { k=index[i];index[i]=index[j];index[j]=k; }
  for ( i=0;i<N;i++ ) { //这里index的顺序就是第0列大小顺序的a数组行号
    for ( j=0;j<M;j++ ) printf("%d ",a[index[i]][j]); printf("\n");
  }
}
索引的原始未排序的顺序是:0 1 2
排序后变成:1 2 0
追问
我这是二维数组啊
声控解锁
2019-01-06
知道答主
回答量:54
采纳率:0%
帮助的人:4.4万
展开全部
#include<stdio.h>
int main()
{float a[5][5],b,t;
int i,j,k;
printf("please enter the score:\n");
for(i=0;i<5;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
for(i=0;i<5;i++)
{b=0;
for(j=0;j<4;j++)
b=b+a[i][j];
a[i][4]=b/4;}
for(k=0;k<4;k++)
{for(i=0;i<4-k;i++)
if(a[i][4]<a[i+1][4])
{t=a[i][j];a[i][j]=a[i+1][j];a[i+1][j]=t;}}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%f\n",a[i][j]);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式