对2d数组进行排序,找到索引并存储在数组中

时间:2013-10-16 19:06:48

标签: c arrays sorting

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

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

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

感谢

1 个答案:

答案 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;
    }