我有一个连续数字相同的二维数组 我必须按顺序查找元素的索引并将其放在另一个数组中 例如,假设输入数组具有以下数字:
int test[5][2]= { {12,12},{3,3},{14,14},{5,5},{8,8} }.
我必须在结果数组中输出:
result[5] = {1,3,4,0,2}.
只是元素的索引按递增顺序...
我写了这个程序,但结果数组总是1.
int main()
{
int N=5;
int result[5];
int test[5][2] = { {12,12},{3,3},{14,14},{5,5},{8,8} };
int i,j;
int smallindex = 0;
for (j=0; j<5; j++)
{
for (i=1; i<5; i++)
{
if (test[i][0] < test[i-1][0])
{
smallindex=i;
}
}
result[j]=smallindex;
}
for (j=0; j<5; j++)
{
printf("%d \t ", result[j]);
}
}
有谁能告诉我这有什么问题?。
感谢
答案 0 :(得分:1)
对代码中的if
语句进行少量修改。
for(i=0;i<5;i++)
{
smallindex=0;
for(j=0;j<5;j++) {
//try to avoid comparing same element by checking i==j
if(test[i][0]<test[j][0])
smallindex++; // check each element with all elements.count how many elements are greater than specific element.increment count and at the end of inner loop assign to result array.
}
result[i]=smallindex;
}