Hướng dẫn thuật toán sắp xếp hợp nhất Python
Tìm hiểu cách triển khai Sắp xếp hợp nhất trong Python. Ví dụ tương tác từng bước về chiến lược sắp xếp Phân chia và Chinh phục.
Tổng quan
Sắp xếp hợp nhất là một thuật toán sắp xếp hiệu quả cao sử dụng chiến lược chia để trị. Nó chia một danh sách chưa được sắp xếp thành các danh sách con nhỏ hơn, sắp xếp các danh sách con đó rồi hợp nhất chúng lại với nhau.
Thuật toán chia mảng một nửa theo cách đệ quy cho đến khi nó đạt đến các mảng con một phần tử. Sau đó, nó hợp nhất các mảng con đã sắp xếp bằng cách so sánh các phần tử từ mỗi phía và đặt chúng theo thứ tự đã sắp xếp. Điều này đảm bảo độ phức tạp về thời gian tối ưu.
Bất kể mảng ban đầu được sắp xếp, đảo ngược hay hoàn toàn ngẫu nhiên, Sắp xếp Hợp nhất sẽ thực hiện trong thời gian O(n log n). Tuy nhiên, nó cần thêm không gian O(n) để chứa các danh sách phụ trong giai đoạn hợp nhất.
Đầu ra mã & thực thi
Triển khai đệ quy tiêu chuẩn của thuật toán Sắp xếp Hợp nhất trong Python.
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = merge_sort(arr[:mid])
right_half = merge_sort(arr[mid:])
return merge(left_half, right_half)
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
# Test dataset
data = [38, 27, 43, 3, 9, 82, 10]
print("Original List:", data)
sorted_data = merge_sort(data)
print("Sorted List: ", sorted_data)Original List: [38, 27, 43, 3, 9, 82, 10]
Sorted List: [3, 9, 10, 27, 38, 43, 82]Triển khai từng bước
- Sắp xếp danh sách liên kết trong đó cấu trúc nút tạo điều kiện cho việc hợp nhất dễ dàng mà không cần sao chép
- Quy trình sắp xếp bên ngoài dành cho các tệp không vừa hoàn toàn với RAM hệ thống
- Các ứng dụng sắp xếp ổn định trong đó các khóa khớp phải giữ nguyên thứ tự ban đầu của chúng
Câu hỏi thường gặp
Hợp nhất Sắp xếp có phải là thuật toán sắp xếp ổn định không?
Có, Sắp xếp Hợp nhất ổn định. Khi so sánh các phần tử giống nhau, phần tử từ mảng con bên trái (ban đầu) được đặt trước, giữ nguyên vị trí tương đối ban đầu của chúng.
Tại sao Python sử dụng Timsort thay vì Sắp xếp hợp nhất thuần túy?
`sorted()` tích hợp của Python sử dụng Timsort, đây là một thuật toán kết hợp kết hợp Sắp xếp Hợp nhất và Sắp xếp Chèn. Nó tối ưu hóa các mẫu dữ liệu trong thế giới thực bằng cách xác định các phân đoạn phụ đã được sắp xếp, hiển thị nó nhanh hơn Sắp xếp Hợp nhất thuần túy.
Chủ đề liên quan
Khám phá thuật toán quicksort trong Python. Tìm hiểu lựa chọn trục, phân vùng và đệ quy trong ví dụ mã hóa tương tác này.
Thuật toán sắp xếp PythonKhám phá các thuật toán sắp xếp python. Trực quan hóa sắp xếp bong bóng và sắp xếp hợp nhất nguyên bản trong ngữ cảnh IDE của trình duyệt.
Thuật toán tìm kiếm nhị phân PythonTìm kiếm danh sách được sắp xếp theo thời gian logarit O(log n). Chạy và hiểu tìm kiếm nhị phân trong Python, bao gồm logic từng bước, các trường hợp phức tạp và tối ưu hóa.