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
写出代码
并说明这么做每一步原因 展开
表达的很不清楚,下面给出实例:
原始数组:
1 5 8
7 8 3
4 6 5
按第一列降序排序之后的结果:
7 8 3
4 6 5
1 5 8
写出代码
并说明这么做每一步原因 展开
2个回答
展开全部
就好比每个学生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
追问
我这是二维数组啊
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询