【发布时间】:2018-11-19 12:30:52
【问题描述】:
我想根据每行第一个元素的值对二维数组进行排序。因此,在数组的第一个位置具有最低值的行应该放在数组的开头。
我在下面使用的代码:
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
有什么想法吗?
【问题讨论】:
-
您需要选择是需要 C 解决方案(例如
qsort)还是 C++ 解决方案(例如std::sort)。你的标题说 C,你的标签说 C++。是哪个? -
如果您在 C 或 C++ 中搜索解决方案,请澄清。标题表示 C,但标签表示 C++。选择了一个。您还可以提供当前输出吗?顺便说一句,您的数组似乎已经按初始化排序了,对吧?
-
嗯,从问题的内容来看,他似乎想根据每一行的第一个元素,按照升序的顺序对二维数组进行排序。
-
@DavidC.Rankin:他说最高值应该在开头,这对我来说意味着下降。
-
我知道他在说什么——但是再看看“我想要的输出:”。
标签: c++ arrays sorting multidimensional-array