Professional Documents
Culture Documents
Conquer
What?
Chia để trị là gì
Là một chiến lược thiết kế
thuật toán:
FrameWork
else:
Divide P into n
smaller sub-problem p
Apply DnC(p_n)
Combine(DAC(p_n))
Tính tổng n số
Tính tổng n số
T ( n ) = aT ( n / b) + f(n)
T ( n ) = 4T ( n / 2) + n
T ( n ) = 4T( n / 2) + n2
T ( n ) = 4T( n / 2) + n3
Masters Theorem
T ( n ) = 4T ( n / 2) + n
a=4 k=1 log_2(4) = 2 > k = 1
b=2 p=0
Case 1: Ө(n2)
Masters Theorem
T ( n ) = 4T( n / 2) + n2
a=4 k=2 log_2(4) = k = 2
b=2 p=0
T ( n ) = 4T( n / 2) + n3
a=4 k=3 log_2(4) = 2 < k = 3
b=2 p=0
Case 3: Ө(n3 )
Merge Sort
Merge Sort
8 2 9 4 5 3 1 6
2 8 4 9 3 5 1 6
2 4 8 9 1 3 5 6
1 2 3 4 5 6 8 9
# Divide
def mergeSort(arr):
if len(arr) > 1:
mid = len(arr)//2
L = arr[:mid]
R = arr[mid:]
mergeSort(L)
mergeSort(R)
#Sort and merge #Checking if any element was
i = j = k = 0 left
while i < len(L) and j while i < len(L):
< len(R): arr[k] = L[i]
if L[i] <= R[j]: i += 1
arr[k] = k += 1
L[i]
i += 1 while j < len(R):
else: arr[k] = R[j]
arr[k] = j += 1
R[j] k += 1
j += 1
k += 1
Độ phức tạp
25
Lorem Ipsum
25
Lorem Ipsum
2 22 22 2 22 22
2 2 2 2 2 2 2 2
Tính pow(x, n)
1024
32
Lorem Ipsum
32
Lorem Ipsum
2 4 4 2 4 4
2 2 2 2 2 2 2 2
Tính pow(x, n)