Skip to Content
🧮 CTDL & Giải thuật✂️ Chia để trị

Chia để trị (Divide and Conquer)

Chia để trị là gì?

Divide and Conquer là kỹ thuật giải bài toán bằng cách:

  1. Divide: Chia bài toán thành các bài toán con nhỏ hơn
  2. Conquer: Giải quyết từng bài toán con (đệ quy)
  3. Combine: Kết hợp kết quả

Merge Sort

def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left, right) def merge(left, right): result = [] i = j = 0 while i < len(left) and j < len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result.extend(left[i:]) result.extend(right[j:]) return result

Lũy thừa nhanh

def power(base, exp): """Tính base^exp trong O(log n)""" if exp == 0: return 1 half = power(base, exp // 2) if exp % 2 == 0: return half * half else: return half * half * base
💡

Nên dùng khi: Bài toán có thể chia thành bài toán con độc lập với cùng dạng.


Tiếp theo: Quy hoạch động

Last updated on