如何查找数组中整数之间是否存在共同点?

时间:2016-05-01 08:14:28

标签: c arrays sorting difference

让我们说用户输入是7 10 12 14 16 20 25.我希望输出是一组按升序排列的数字,它们的差别是完全相同的。所以对于这种情况,它将是:12,25,7,20或10,14,16,20。注意在两种情况下它们的差异是相同的,并且输出中至少有4个数字。我该怎么做?

我试图找出数组中整数之间是否存在共同点。我首先想到的是按升序对它们进行排序会更好,然后如果sorted_array[1] - sorted_array[0] = sorted_array[2] - sorted_array[1]则会有一个共同的区别。但是如果数字是例如4 5 12 13 16 20 27 28,那么它就不起作用,[12,5], [20,13], [27,20]

之间存在共同点
int r = 0; 
int l = 0; 
while (r < n) {
    if (arr_days4[r] - arr_days4[l] == arr_days4[r+1] - arr_days4[l+1]) {
        sequence_difference++;
        r++;
        i++;
    }
    else if(arr_days4[i] - arr_days4[r] > arr_days4[r + 1] - arr_days4[l+1]){
        l++;
    }
    else{
        r++;
    }
    printf("\n%d", sequence_difference);
}

当我尝试打印sequence_difference时,它给了我32767 ...任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

首先,您应该清除要求或指定所需的输入和输出。 但看到你的代码有很多错误,我可以弄清楚

for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) {
        if (array[i] > array[j]) {
            a = array[i];
            array[i] = array[j];
            array[j] = a;
        }
    }
}

内循环必须迭代n-1次,因为在最后一次传球时如果你不这样做,我将超过n。 下一个错误是在你的while循环中你使用了i,它具有值n,因为循环的上限。 所以试着看看这些错误。 了解更多信息can check