如何使用可比较的函数而不是使用位置数组按最后一列对 2D 矩阵进行排序?
4 20 15 23 18 9 89
1 8 23 22 14 18 86
17 15 13 18 12 15 90
3 18 8 20 12 5 66
这是我的二维矩阵示例,其中最后一列表示行i = 1 -> n的元素之和。我必须按升序对行进行排序,比较最后一列的元素。
编辑!
第一个代码是这个:
int main()
{
int x[101][101],y[101],z[101],n,m;
int i,I,j,l,Mi=1000001,b=0;
int s=0;
cin>>n>>m;
for(i=1;i<=n;i++)
for(I=1;I<=m;I++)
cin>>x[i][I];
for(i=1;i<=n;i++)
{
s=0;
for(I=1;I<=m;I++)
s=s+x[i][I];
y[i]=s;
}
for(l=1;l<=n;l++)
{
Mi=1000001;
for(j=1;j<=n;j++)
if(y[j]<Mi)
{
Mi=y[j];
b=j;
}
z[l]=b;
y[b]=1000002;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<x[z[i]][j]<<" ";
cout<<endl;
}
return 0;
}
但正如我所说..我使用的位置数组不是最好的,因为它们占用了大量空间,我不希望这样。该数组是一个整数数组。我被卡住了,因为我不知道另一种方法,这就是为什么我想寻求您的帮助。
