Sắp xếp chọn¶
Tóm lược nội dung
Bài này trình bày thuật toán sắp xếp chọn.
Ý tưởng¶
Hãy tưởng tượng, ta cần chọn đội hình gồm những cầu thủ có phong độ tốt nhất từ những cầu thủ hiện có để thi đấu.
Ta thực hiện bằng cách: chọn cầu thủ có phong độ tốt nhất, chọn cầu thủ có phong độ tốt thứ hai, chọn cầu thủ có phong độ tốt thứ ba, v.v...
Áp dụng cách trên cho mảng, nếu xem "nhỏ nhất" đồng nghĩa "tốt nhất", thì ta sẽ chọn phần tử nhỏ nhất trước, rồi chọn tiếp phần tử nhỏ nhất tiếp theo, rồi chọn tiếp phần tử nhỏ nhất tiếp theo nữa, v.v...
Thuật toán sắp xếp chọn
Duyệt từng phần tử A[i] từ đầu đến áp cuối, lặp các thao tác sau:
- Tìm vị trí
mincủa phần tử nhỏ nhất trong mảng con từ vị tríiđến cuối mảng. - Hoán vị
A[i]vàA[min].
Thuật toán có thể được phác họa như hình sau:
Ví dụ minh họa¶
Lưu đồ¶
Trực quan hóa¶
Viết chương trình¶
1. Nạp thư viện numpy.
2. Viết hàm selection_sort() để thực hiện thuật toán sắp xếp chọn.
3. Viết chương trình chính.
Trong chương trình chính, ta tạm thời bỏ qua việc cho người dùng nhập mảng. Thay vào đó, ta khởi tạo mảng cố định, rồi gọi hàm selection_sort() để sắp xếp mảng Array.
4. Chạy chương trình trên, kết quả như sau:
Mã nguồn¶
Code đầy đủ được đặt tại:
Some English words¶
| Vietnamese | Tiếng Anh |
|---|---|
| hoán vị (hai phần tử) | swap |
| sắp xếp chọn | selection sort |
| so sánh | compare |