LT365
Skip to main content
Completion requirements

Các thuật toán sắp xếp

Chúng ta cùng phân tích và minh họa các thuật toán sắp xếp cơ bản trên bộ dữ liệu: [4, 2, 1, 3]

 

1. Sắp xếp Nổi bọt (Bubble Sort)

Ý tưởng thuật toán

  • Duyệt qua danh sách, so sánh các cặp phần tử kề nhau.
  • Nếu phần tử trước lớn hơn phần tử sau, thực hiện hoán đổi vị trí.
  • Sau mỗi lượt duyệt, phần tử lớn nhất sẽ "nổi" về cuối dãy, vị trí đó được xem là đã sắp xếp.
Lượt duyệt Bước so sánh So sánh (a[j], a[j+1]) Trạng thái mảng
Lượt 1
Đẩy số 4 về cuối
1.1 So sánh (4, 2) → 4 > 2 (Đổi) [2, 4, 1, 3]
1.2 So sánh (4, 1) → 4 > 1 (Đổi) [2, 1, 4, 3]
1.3 So sánh (4, 3) → 4 > 3 (Đổi) [2, 1, 3, 4]
Lượt 2
Đẩy số 3 về cuối
2.1 So sánh (2, 1) → 2 > 1 (Đổi) [1, 2, 3, 4]
2.2 So sánh (2, 3) → 2 < 3 (Giữ) [1, 2, 3, 4]
Lượt 3 3.1 So sánh (1, 2) → 1 < 2 (Giữ) Xong! [1, 2, 3, 4]
 

2. Sắp xếp Lựa chọn (Selection Sort)

Ý tưởng thuật toán

  • Chia danh sách thành hai phần: phần đã sắp xếp và phần chưa sắp xếp.
  • Trong phần chưa sắp xếp, tìm phần tử có giá trị nhỏ nhất (Min).
  • Hoán đổi phần tử nhỏ nhất đó với phần tử đầu tiên của phần chưa sắp xếp.
Bước Phần chưa sắp xếp Giá trị nhỏ nhất (Min) Thực hiện Hoán đổi
Bước 1 [4, 2, 1, 3] 1 (vị trí số 2) Đổi 4 và 1 → [1, 2, 4, 3]
Bước 2 1 | [2, 4, 3] 2 (vị trí số 1) Giữ nguyên → [1, 2, 4, 3]
Bước 3 1, 2 | [4, 3] 3 (vị trí số 3) Đổi 4 và 3 → [1, 2, 3, 4]
Bước 4 1, 2, 3 | [4] 4 Kết thúc [1, 2, 3, 4]
 

3. Sắp xếp Chèn (Insertion Sort)

Ý tưởng thuật toán

  • Lấy lần lượt các phần tử từ phần chưa sắp xếp làm "Key".
  • So sánh Key với các phần tử thuộc phần đã sắp xếp (bên trái nó).
  • Dịch chuyển các phần tử lớn hơn Key sang phải để tạo khoảng trống và chèn Key vào đúng vị trí.
Lượt chèn Khóa (Key) So sánh & Dịch chuyển Mảng sau khi chèn
Lượt 1 2 2 < 4: Đẩy 4 sang phải [2, 4, 1, 3]
Lượt 2 1 1 < 4: Đẩy 4 sang phải [2, _, 4, 3]
1 < 2: Đẩy 2 sang phải [1, 2, 4, 3]
Lượt 3 3 3 < 4: Đẩy 4 sang phải. 3 > 2: Dừng. [1, 2, 3, 4]

Bảng tổng kết Độ phức tạp

Thuật toán Trường hợp tệ nhất (Worst Case) Trường hợp tốt nhất (Best Case) Lý do kỹ thuật
Bubble Sort O(n²) ONo Cần 2 vòng lặp lồng nhau ($n \times n$). Nếu mảng đã xếp xong, chỉ cần 1 lần duyệt kiểm tra để thoát.
Selection Sort O(n²) O(n²) Luôn quét toàn bộ phần chưa xếp để tìm giá trị nhỏ nhất, không phụ thuộc vào trạng thái dữ liệu.
Insertion Sort O(n²) ONo Tệ nhất khi mảng ngược hoàn toàn (phải dịch chuyển $n^2$ lần). Tốt nhất khi mảng đã xếp sẵn.

Last modified: Tuesday, 3 February 2026, 10:07 PM