Selection Sort
Cập nhật: 2026-08-10
Mục lục
1. Ý tưởng của Selection Sort
Selection Sort chia mảng thành hai phần: phần đã sắp xếp (bên trái) và phần chưa sắp xếp (bên phải). Ở mỗi lượt, thuật toán quét toàn bộ phần chưa sắp xếp để tìm phần tử nhỏ nhất, rồi hoán đổi nó vào đầu phần chưa sắp xếp — mở rộng phần đã sắp xếp thêm một vị trí.
Với mảng có n phần tử, thuật toán cần đúng n - 1 lượt để hoàn tất.
2. Xem thuật toán chạy từng bước
Bấm Chạy để xem animation tự động, hoặc dùng Lùi / Tiến để đi qua từng bước một. Cột màu cam là cặp đang được so sánh, viền xanh dương là min_idx hiện tại, và cột màu xanh mint là phần đã sắp xếp xong.
Selection Sort
Bắt đầu lượt 1: tìm phần tử nhỏ nhất trong phần chưa sắp xếp.
3. Độ phức tạp
| Selection Sort | |
|---|---|
| Thời gian (mọi trường hợp) | O(n²) |
| Bộ nhớ phụ | O(1) |
| Ổn định (stable) | Không |
| Số lần hoán đổi | Tối đa O(n) — ít hơn hẳn Bubble Sort |
Điểm mạnh của Selection Sort là số lần hoán đổi rất ít (tối đa n - 1 lần), nên nó phù hợp khi chi phí ghi (write) đắt hơn nhiều so với chi phí so sánh — ví dụ ghi vào bộ nhớ flash.