n n
T ime(n) = Θ(n 2 ) T ime(n) = Θ(2n) n i=1 i = Θ(n2 ) T (n) = 2T ( n 2 ) + n = Θ(n log n)
i i i i i
i i & i i +
L(1..n) i L(i)
n n L n i j : L[i] L[1..j]. (j n) j = j + 1 L[i] < L[j] i = j
i
& n n
& &
x = x + 2 x x x x = x + 2 x = x + 2 & = max( ) =
A B A B & &
O Θ
n 0 S(n) n n 0, S(n) n S(0) & S(n1) S(n) & & n 0, S(n)
S(0) ( ) S(0) S(1) (, n = 1) S(1) S(1) S(2) (, n = 2) S(2) S(2) S(3) (, n = 3) S(3)... n n n i
i i i
n k k k & & k + 1
k + 1 & k = 0 k = n & & n k k k & &
k = 1 k = n & & A[1..n] i A[i] = A[i..j] A[1..n] j i + 1 A[i..j] A[mid] A[i..mid] A[mid+1..j]
& & A[i..j] > A[mid] A[1..mid] A[mid + 1..j] < A[mid] = A[mid] A[i..mid] & & & n, n 2, n 4, n 8, n 16,..., 8, 4, 2, 1 Θ(log n) O(1) Θ(log n) A[1..n] A[1..n] A[mid] A[mid]
n i, j 1 i < j n, A[i] > A[j] & & & & & n(n 1)/2 n(n 1)/2
O(n 2 ) A[i..j] i j i j A(i..j) mid = i+j 2 A[i..j] = A[3, 4] A[mid..j] = A[3, 4]
< A[mid] A[mid] A[i..j] A[i..mid] A[mid + 1..j] A[mid] < A[mid] A[mid + 1..j] i = 1 (i n)a[i] = 0; i = i + 1; i I j=1 j s = 0 i = 1 while(i I) : s = i j=1 j. s = s + i i = i + 1 return(s)