Trang chủ » Blog » [Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn – Selection Sort

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn – Selection Sort

bởi nhungnguyen5 | 07/08/2024 00:20 | Blog | Thuật toán
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&GT.
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.

1. Ý tưởng

Ý tưởng của thuật toán sắp xếp chọn (selection sort) là:

  1. Tìm phần tử nhỏ nhất trong mảng chưa được sắp xếp.
  2. 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.
  3. Di chuyển con trỏ đến phần tử tiếp theo của mảng chưa được sắp xếp.
  4. 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:

  1. Tìm phần tử nhỏ nhất trong mảng.
  2. Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên của mảng.
  3. 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.
  4. 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]:

  1. 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].
  2. Tìm phần tử nhỏ nhất trong mảng [2, 4, 6, 5, 3]2, hoán đổi 2 với 2 => [1, 2, 4, 6, 5, 3].
  3. Tìm phần tử nhỏ nhất trong mảng [4, 6, 5, 3]3, hoán đổi 3 với 4 => [1, 2, 3, 6, 5, 4].
  4. Tìm phần tử nhỏ nhất trong mảng [6, 5, 4]4, hoán đổi 4 với 6 => [1, 2, 3, 4, 5, 6].
  5. Mảng đã được sắp xếp.

3. Hình minh họa

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn

4. Pseudo code

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn

5. Mã nguồn trong Java

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn

6. Mã nguồn trong PHP

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn

7. Mã nguồn trong Python

[Mỗi ngày 1 thuật toán] Thuật toán sắp xếp chọn

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

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

15 + 1 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM