Chia để trị ổn định: chia mảng làm đôi đệ quy đến khi còn 1 phần tử, rồi trộn (merge) từng cặp đoạn đã sắp xếp lại với nhau. Luôn O(n log n), cần thêm O(n) bộ nhớ phụ.
Trộn hai dãy đã sắp xếp thành một dãy sắp xếp chỉ tốn O(n) — đó là "viên gạch" duy nhất mà Merge Sort cần, lặp lại nó theo kiểu chia để trị là xong.
Sắp xếp một mảng số nguyên tăng dần, đảm bảo O(n log n) trong mọi trường hợp (khác Quick Sort).
Nếu một mảng chỉ có 1 phần tử, nó đã "sắp xếp xong". Chia mảng làm đôi, đệ quy sắp xếp từng nửa, rồi trộn (merge) hai nửa đã sắp xếp lại thành một mảng sắp xếp duy nhất: dùng hai con trỏ, mỗi bước lấy phần tử nhỏ hơn giữa hai đầu, đẩy vào mảng tạm, cho đến khi hết cả hai nửa.
| Trường hợp | Thời gian | Ghi chú |
|---|---|---|
| Mọi trường hợp | O(n log n) | log n lượt chia, mỗi lượt trộn tốn O(n) |
| Không gian | O(n) | Cần mảng tạm để trộn — không sắp xếp tại chỗ |
Vì luôn ổn định O(n log n) và ổn định (stable — giữ nguyên thứ tự tương đối của các phần tử bằng nhau), Merge Sort là lựa chọn khi cần độ phức tạp đảm bảo hoặc khi cần tính ổn định (ví dụ sắp xếp học sinh theo điểm nhưng vẫn giữ thứ tự theo tên ban đầu).
Mảng [6, 2, 9, 4]:
[6, 2] và [9, 4].[6], [2], [9], [4] — mỗi mảng 1 phần tử, coi như đã sắp xếp.[6] và [2] → [2, 6]. Trộn [9] và [4] → [4, 9].[2, 6] và [4, 9]: so 2&4→lấy 2, so 6&4→lấy 4, so 6&9→lấy 6, còn lại lấy 9 → [2, 4, 6, 9].Kiểm tra nhanh
Vì sao Merge Sort cần thêm O(n) bộ nhớ phụ trong khi Quick Sort/Heap Sort thì không?