#algorithm #complexity-theory
Вопрос:
Есть ли способ определить временную сложность следующего алгоритма?
int n=A.length, temp;
for (int i=0; i<n; i ){
for (int j=i 1; j<n; j ){
temp =A[i][j];
A[i][j]=A[j][i];
A[j][i]=temp;
}
}
}
Комментарии:
1. Просто подсчитайте, как часто в общей сложности выполняется своп-код. Это
n (n - 1) (n - 2) ... 1
. Такsum_(i = 1)^n i
что , что есть(n^2 n)/2
, тоO(n^2)
есть .
Ответ №1:
Это O(n^2)
.
Существует вложенный цикл ( i
идет от 0 до n-1
; и для каждого i
j
идет от i 1
до n
).
Это просто количество уникальных пар для всех i, j
в диапазоне 0 to n-1
.
Обмен происходит O(1)
.