Теорема. Для алгоритма сортировки слиянием без рекурсией существует верхняя оценка времени работы алгоритма Φ(n)=Θ (n ln n); алгоритм требует Θ(n) дополнительной памяти в куче и Θ(1) дополнительной памяти в стеке.

 

 

QSort.

медиана {a0,…,an-1} = a[n/2], где {a0,…,an-1} – отсортированный исходный массив

 

mi: [i,j]<x<[k,l]: itj: mt<x, ktl: 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,ba,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

Ч.Т.Д.