Merge Sort – Chia để trị
Ý tưởng: Chia mảng thành hai nửa, sắp xếp từng nửa, rồi trộn lại.
Độ sâu: 0
Kích thước: 8
Nhấn "Bắt đầu" để xem mô ph��ng thuật toán Merge Sort
📝 Lịch sử các bước thực hiện
Chưa có bước nào được thực hiện. Nhấn "Bắt đầu" để bắt đầu.
🐍 Code Python - Giải thuật Merge Sort
def merge_sort(arr): # Trường hợp cơ sở: mảng có 0 hoặc 1 phần tử if len(arr) <= 1: return arr # Chia mảng thành hai nửa mid = len(arr) // 2 left = arr[:mid] right = arr[mid:] # Đệ quy sắp xếp từng nửa left = merge_sort(left) right = merge_sort(right) # Trộn hai mảng đã sắp xếp return merge(left, right) def merge(left, right): # Tạo mảng kết quả result = [] i = j = 0 # So sánh và trộn hai mảng 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 # Thêm các phần tử còn lại (nếu có) result.extend(left[i:]) result.extend(right[j:]) return result # Ví dụ sử dụng arr = [42, 17, 33, 5, 88, 21, 9, 60] print("Mảng ban đầu:", arr) sorted_arr = merge_sort(arr) print("Mảng đã sắp xếp:", sorted_arr) # Kết quả: [5, 9, 17, 21, 33, 42, 60, 88]
Độ phức tạp: O(n log n)
Ổn định, hiệu quả cho mảng lớn.
Nhận xét
Đăng nhận xét