Hydrosort – это алгоритм сортировки. Ниже приведен псевдокод.
*/A is arrary to sort, i = start index, j = end index */
Hydrosort(A, i, j): // Let T(n) be the time to find where n = j-1+1
n = j – i + 1 O(1)
if (n < 10) { O(1)
sort A[i…j] by insertion-sort O(n^2) //insertion sort = O(n^2) worst-case
return O(1)
}
m1 = i + 3 * n / 4 O(1)
m2 = i + n / 4 O(1)
Hydrosort(A, i, m1) T(n/2)
Hydrosort(A, m2, j) T(n/2)
Hydrosort(A, i, m1) T(n/2)
T(n) = O(n^2) + 3T(n/2), поэтому T(n) равно O(n^2). Я использовал 3-й случай основной теоремы, чтобы решить это повторение.
У меня есть 2 вопроса:
Правильно ли я рассчитал время работы в наихудшем случае?
как мне доказать, что Hydrosort(A, 1, n) правильно сортирует массив A из n элементов?
sort A[i…j] by insertion-sort
ограничена некоторой константой, максимальным временем сортировки массива из 10 элементов, поэтому это не O(n^2), можно просто считать за O(1). - person g.kov   schedule 25.05.2020[i, m1]
и[m2, j]
содержат неn/2
элементов, а3n/4
, поэтому должно бытьT(3n/4)
вместоT(n/2)
. - person g.kov   schedule 25.05.2020