Tiếp nối chuỗi series “Mỗi ngày 1 thuật toán” với mong muốn giúp các bạn sinh viên IT vượt qua kiếp nạn mang tên CTDL>.
Chủ đề hôm nay là 1 thuật toán siêu kinh điển: Sắp xếp chọn. Mỗi thuật toán sẽ bao gồm ý tưởng, ví dụ minh họa và các đoạn mã nguồn cho từng ngôn ngữ.
Thông qua chuỗi series này, CodeGym hi vọng các bạn có cái nhìn bao quát nhất về bản chất và cấu trúc của từng thuật toán.
Nội dung
1. Ý tưởng
Ý tưởng của thuật toán sắp xếp chọn (selection sort) là:
- Tìm phần tử nhỏ nhất trong mảng chưa được sắp xếp.
- Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên của mảng chưa được sắp xếp.
- Di chuyển con trỏ đến phần tử tiếp theo của mảng chưa được sắp xếp.
- Lặp lại các bước 1-3 cho đến khi toàn bộ mảng được sắp xếp.
Cụ thể, thuật toán sẽ thực hiện như sau:
- Tìm phần tử nhỏ nhất trong mảng.
- Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên của mảng.
- Lặp lại các bước trên với phần còn lại của mảng, bắt đầu từ phần tử thứ hai.
- Tiếp tục lặp lại cho đến khi toàn bộ mảng được sắp xếp.
2. Ví dụ, cho mảng [5, 2, 4, 6, 1, 3]:
- Tìm phần tử nhỏ nhất trong mảng là 1, hoán đổi 1 với 5 => [1, 2, 4, 6, 5, 3].
- Tìm phần tử nhỏ nhất trong mảng [2, 4, 6, 5, 3] là 2, hoán đổi 2 với 2 => [1, 2, 4, 6, 5, 3].
- Tìm phần tử nhỏ nhất trong mảng [4, 6, 5, 3] là 3, hoán đổi 3 với 4 => [1, 2, 3, 6, 5, 4].
- Tìm phần tử nhỏ nhất trong mảng [6, 5, 4] là 4, hoán đổi 4 với 6 => [1, 2, 3, 4, 5, 6].
- Mảng đã được sắp xếp.
3. Hình minh họa
4. Pseudo code
5. Mã nguồn trong Java
6. Mã nguồn trong PHP
7. Mã nguồn trong Python
Xem thêm nhiều bài viết thú vị về chuỗi chủ đề “Mỗi ngày một thuật toán” tại đây nhé!!!
0 Lời bình