Алгоритм для нахождения разницы между соседними элементами, разница между которыми ближе к нулю

#algorithm #data-structures

#алгоритм #структуры данных

Вопрос:

Существует отсортированный массив из n элементов (как положительных, так и отрицательных), мы должны найти разницу между каждой парой элементов, являющихся (смежными) разницей между элементами с индексами (0 1, 1 2, 2 3 и так далее n-1 n) и найти, какая разница близка к нулю.

Пример: -56 -57 -46 -43 -33 -25 -24 -12 -10 1 3 6 7 8 9 56 57 68 78

Здесь 1 — разница, близкая к 0.

Условие: без нахождения разницы между каждой парой не проходите через весь массив

Я получил это, но без условия

Комментарии:

1. если вы просто сравниваете 0-1, 1-2, 2-3 и так далее, вы уже не сравниваете все пары (такие как 0-2, 0-3 и так далее). Покажите свой код, он, вероятно, уже правильный.

Ответ №1:

Сканируйте пары линейным способом, получая к ним доступ с помощью индексов i и i 1 :

 best = ABS(data[0] - data[1]);
for (i = 1; i < data.length - 2; i  )
{
    d = ABS(data[i] - data[i   1]);
    if (d < best)
    {
        best = d;
    }
}
  

Возможно, вы захотите выйти из for() пораньше, но это зависит. У этого есть стоимость.

     if (best == 0)
    {
        break; // for()
    }