C - 排序数组描述

时间:2015-12-06 23:12:49

标签: c arrays

我有几个小时在思考这个问题的可能解决方案,而且我得到了一个,但是太长了,我认为我的解决方案比平时更难。

你能帮助我在C中实现这个结果吗?

输入(示例):

  int input[4] = {40, 10, 50, 23}
  //The solution would be 2, 0, 3 ,1
  input[0] = 40;
  input[1] = 10;
  input[2] = 50;
  input[3] = 23;

我想要的是什么:

int order[4] = {2, 0, 3, 1} 

顺便说一下,我需要维护输入数组,所以我真的需要为订单创建另一个。

修改

嗯,我修改了一些代码,这对我有用,Thx家伙。

for (i = 0; i < 4; i++)
{
    for (j = 0; j < 4; j++)
    {
        if (i==j)
            continue;
        if (decimalpart[i]<decimalpart[j])
            ordem[i]++;
    }
}

这也适用于双打/浮点数。不是这个具体的例子,数组列表是随机的。

1 个答案:

答案 0 :(得分:1)

你在这里:

int i,j;
int input[] = {40, 10, 50, 23};
int size = sizeof(input)/sizeof(int);
int order[size];
for (i = 0; i < size; i++) {
    order[i] = 0;
}
for (i = 0; i < size; i++) {
    for (j = 0; j < size; j++) {
        if (i==j) {
            continue;
        }
        if (input[i]>input[j]) {
            order[i]++;
        }
    }
}
for (i = 0; i < size; i++) {
    printf("%d, ",order[i]);
}