2

我有一个二维数组,它连续具有相同的数字。
我必须以递增的顺序找到元素的索引并将其放入另一个数组中。
例如,假设输入数组具有以下数字:

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]);
    }
}

谁能告诉我这有什么问题?

谢谢

4

1 回答 1

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;
    }
于 2013-10-16T19:25:10.057 回答