У меня есть матрица m * n и для каждой строки мне нужно сравнить все элементы из них. Для каждой пары, которую я нахожу, я вызову функцию, которая будет выполнять некоторые вычисления.Сравнение всех элементов массива - алгоритм C
Пример:
my_array -> {1, 2, 3, 4, 5, ...}
I take 1 and I have: (1,2)(1,3)(1,4)(1,5)
I take 2 and I have: (2,1)(2,3)(2,4)(2,5)
and so on
Используя C Я написал это:
for (i=0; i<array_length; i++) {
for (k=0; k<array_length; k++) {
if (i==k) continue;
//Do something
}
}
}
мне было интересно, если я могу использовать алгоритм с меньшей сложностью.
Не зная конкретные расчеты вы делаете, нет никакого способа узнать, что может быть оптимизировано. –
Итак, у вас действительно есть матрица, или вы просто говорите о перестановках небольших натуральных чисел? – unwind
Есть n^2 пары, поэтому вы не можете сделать лучше, чем n^2 ... –