Việc chọn một thuật toán sắp xếp quy về một vài thuộc tính: độ phức tạp thời gian, tính ổn định, mức dùng bộ nhớ tại chỗ, và bản chất của dữ liệu. Không một thuật toán sắp xếp nào thắng ở mọi nơi.
Việc chọn một thuật toán sắp xếp quy về một vài thuộc tính: độ phức tạp thời gian, tính ổn định, mức dùng bộ nhớ tại chỗ, và bản chất của dữ liệu. Không một thuật toán sắp xếp nào thắng ở mọi nơi.
| Thuật toán | Thời gian TB | Xấu nhất | Ổn định | Tại chỗ |
|---|---|---|---|---|
| Insertion | O(n²) | O(n²) | Có | Có |
| Merge | O(n log n) | O(n log n) | Có | Không |
| Quick | O(n log n) | O(n²) | Không | Có |
| Heap | O(n log n) | O(n log n) | Không | Có |
# Hầu hết các ngôn ngữ đều có sẵn một thuật toán lai đã được tinh chỉnh; hãy ưu tiên nó trong production
sorted(data, key=lambda x: x.priority) # Timsort ổn định trong Python
Đừng tự viết tay một thuật toán sắp xếp trừ khi bạn có lý do cụ thể — các thuật toán sắp xếp thư viện (Timsort, introsort) là các thuật toán lai đã được thử thách qua thực chiến.
Khớp thuật toán sắp xếp với dữ liệu và yêu cầu giúp tránh cả việc lãng phí thời gian lẫn các lỗi tinh vi (như làm mất tính ổn định).
Hiểu các đánh đổi giải thích vì sao các thư viện chuẩn chọn các thuật toán lai như Timsort và introsort.
Khả năng phán đoán so sánh này — chứ không phải ghi nhớ một thuật toán — là điều mà kỹ thuật thực thụ và phỏng vấn tưởng thưởng.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ