Sắp xếp chèn
Trang này sẽ giới thiệu ngắn gọn về sắp xếp chèn (insertion sort).
Định nghĩa
Sắp xếp chèn (tiếng Anh: Insertion sort) là một thuật toán sắp xếp đơn giản và trực quan. Nguyên lý là chia dãy cần sắp xếp thành hai phần: "đã sắp xếp" và "chưa sắp xếp", mỗi lần lấy một phần tử từ phần "chưa sắp xếp" chèn vào đúng vị trí trong phần "đã sắp xếp".
Một ví dụ tương tự là khi chơi bài, mỗi lần bốc một lá bài từ bàn, bạn sẽ chèn nó vào đúng vị trí trong bộ bài trên tay.
Tính chất
Tính ổn định
Sắp xếp chèn là một thuật toán ổn định.
Độ phức tạp thời gian
Trường hợp tốt nhất của sắp xếp chèn là \(O(n)\), rất hiệu quả khi dãy gần như đã có thứ tự.
Trường hợp xấu nhất và trung bình đều là \(O(n^2)\).
Cài đặt mã nguồn
Giả mã
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Sắp xếp chèn nhị phân
Sắp xếp chèn còn có thể tối ưu bằng thuật toán nhị phân, đặc biệt hiệu quả khi số lượng phần tử lớn.
Độ phức tạp thời gian
Sắp xếp chèn nhị phân và sắp xếp chèn thông thường có ý tưởng giống nhau, chỉ khác ở chỗ tối ưu hằng số trong độ phức tạp thời gian, nên độ phức tạp vẫn không đổi.
Cài đặt mã nguồn
1 2 3 4 5 6 7 8 9 10 | |
Last updated on this page:, Update history
Found an error? Want to help improve? Edit this page on GitHub!
Contributors to this page:OI-wiki
All content on this page is provided under the terms of the CC BY-SA 4.0 and SATA license, additional terms may apply