Вы помечаете этот вопрос с помощью Algorithm
(а я не эксперт в C ++), поэтому давайте дадим псевдокод.
Сначала вы должны установить порог, который определяет 2 var с различными значениями ниже этого порога, каканалогичный.Вторым шагом будет цикл по всей паре элементов и проверка на сходство.
Рассмотрим A
как массив с n
объектами и m
как число полей в каждом объекте.
threshold = 0.1
for i in (0, n):
for j in (i+1,n):
flag = true;
for k in (1,m):
if (abs(A[i][k] - A[j][k]) > threshold)
flag = false // if the absolute value of the diff is above the threshold object are not similar
break // no need to continue checks
if (flag)
print: element i and j similar // and do what ever
Сложность по времени O(m * n^2)
.
Обратите внимание, что вы можете использовать тот же алгоритм для сортировки массива объектов - объявите функцию сравнения как max diff для поля и затем выполните соответствующую сортировку.
Надеюсь, это поможет!