我想根据每行第一个元素的值对二维数组进行排序。因此,数组第一个位置具有最低值的行应该放在数组的开头。
我在下面使用的代码:
int Array[5][4] = {
{8 ,1 ,1 ,0},
{6 ,0 ,0 ,0},
{7 ,1 ,1 ,1},
{2 ,1 ,1 ,1},
{1 ,1 ,1 ,1} };
void sortArray(int Sort[][4])
{
int k=0,x,temp;
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
{
if(Sort[i][k] > Sort[j][k])
{
for(int x=0;x<2;x++)
{
temp=Sort[i][x];
Sort[i][x]=Sort[j][x];
Sort[j][x]=temp;
}
}
}
}
for(int i=0;i<5;i++)
{
for(int j=0;j<4;j++)
printf("%d ", Sort[i][j]);
printf("\n");
}
}
我想要的输出:
1 ,1 ,1 ,1
2 ,1 ,1 ,1
6 ,0 ,0 ,0
7 ,1 ,1 ,1
8 ,1 ,1 ,0
有任何想法吗?
你的问题在这里:
for(int x=0;x<2;x++)
您只交换每行的前两个元素,而不是所有四个元素。以下更改应使其按预期工作:
for(int x=0;x<4;x++)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句