A[n];
Sort(p,r)
{
if (A[p] > A[r]) then
A[p]<->A[r]; //exchange
if (p+1 >= r) then
return;
q <- (r-p+1) / 3;
Sort(p, r-q); // 2/3 of head
Sort(p+q, r); // 2/3 of tail
Sort(p, r-q); // again, 2/3 of head
}
Привет всем. Это проблема, в которой я изучаю. Алгоритм отлично работает для сортировки.
n time
15 0.004
16 0.008
17 0.017
18 0.034
19 0.072
20 0.143
21 0.283
22 0.572
23 1.154
24 2.296
25 4.604
26 9.23
27 18.517
выше, как он принимает время для n. (пример: если n равно 15, работайте так. Sort(0,14))
Сложность времени кажется экспоненциальной 2 ^ n. Правильно?
Но я не знаю, как это, потому что я думал, что T(n) = 3T((2/3)*n) + 1 = 3^n. Это не соответствует тому, что у меня есть в реальном времени... Нужна помощь, пожалуйста.