Теорема. Для алгоритма сортировки слиянием без рекурсией существует верхняя оценка времени работы алгоритма
Φ(n)=Θ
(n
ln
n);
алгоритм требует Θ(n)
дополнительной памяти в куче и Θ(1) дополнительной памяти в стеке.
QSort.
медиана {a0,…,an-1} = a’[n/2], где {a’0,…,a’n-1} – отсортированный исходный
массив
mi: [i,j]<x<[k,l]: ∀ i≤t≤j: mt<x, ∀ k≤t≤l: x<mt
Теорема. Для алгоритма QSort1 существует
верхняя оценка времени работы алгоритма Φ(n)=Θ (n2);
алгоритм не требует дополнительной памяти в куче и требует O(n) дополнительной памяти в стеке.
Теорема.
Для алгоритма QSort2
существует верхняя оценка времени работы алгоритма Φ(n)=Θ (n2);
алгоритм не требует дополнительной памяти в куче и требует O(log n) дополнительной памяти в стеке.
Теорема. Алгоритм QSort2 работает за время
Θ (n
log
n)
в среднем по всем перестановкам массива из n различных
элементов {1,…,n}.
Пусть для всех k<n верно: T(k)=Θ (k log k) <a k log k + b для некоторых a,b∈ ℝ a,b>0
T(n)=
( O(n)+T(1)+T(n-1) +∑i=2n(O(n)+T(i-1)+T(n-i+1))
)/n =
O(n)
+ ∑i=2n(T(i-1)+T(n-i+1))/n=
O(n) + 2 /n ∑i=1n-1T(i)=…
∑i=1n-1T(i)<
∑i=1n-1 (a i log i + b) <nb + a∑i=1n/2-1
i log2 i + a∑i=n/2n-1
i log i <
nb + a∑i=1n/2-1 i log (n/2) + a∑i=n/2n-1 i log n =
nb + a∑i=1n-1 i log n - a∑i=1n/2-1 i <
nb + a log n
(n n/2) - a n/2 n/2 =
nb + a n2/2
log n - a n2/4
…=
O(n) + 2 /n (nb + a n2/2
log n - a n2/4)=…
b + a n log n + (O(n) + b - a n/2) ≤ …
выбираем a так, что (O(n) + b - a n/2)≤ 0
…≤
b + a n log n
Ч.Т.Д.