使用强力的两个不同阵列元素之间的最小绝对值差异

时间:2012-04-20 17:35:10

标签: algorithm brute-force

  • 输入:数组a [1..n]的实数;
  • 输出:两个不同数组元素之间的最小绝对差值。

我想要一个蛮力算法。

任何人都有任何想法?

2 个答案:

答案 0 :(得分:4)

如果元素已排序,那么您可能只需要按顺序比较每对项目: [1,3,6,7,28] - > 7-6给出最小距离

为了强制它,我想你可以从每个其他值(n * n-1)中减去每个值,并跟踪哪一对最小。您需要确保不从自身中减去相同的元素,但具有相同值的元素应该是成对的。

答案 1 :(得分:3)

如果你想暴力破解它,只需循环遍历每对元素:

min = infinity

for i=1 to n-1
    for j = i+1 to n
        if abs(a[i]-a[j]) < min
            min = abs(a[i]-a[j])

这需要O(n^2)次。您可以通过首先对列表进行排序来实现O(n log n)时间:

sort(a)
min = infinity

for i = 1 to n-1
    if abs(a[i+1]-a[i]) < min
        min = abs(a[i+1]-a[i])