@techtipsvn
Thuật toán sắp xếp · Bubble sort

Chạy tay bubble sort một lượt trên năm số là hiểu vì sao nó chậm

Chạy tay một lượt trên năm số, rồi nói được vì sao nó chậm.

2026-08-1908 slide2 phút đọcGiải thích
Slide bìa: Chạy tay bubble sort một lượt trên năm số là hiểu vì sao nó chậmSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8
cuộn, vuốt, hoặc phím ←→01 / 08

Cùng một bài, đọc bằng chữ. Nhanh hơn và tìm lại được bằng Ctrl+F.

So hai số cạnh nhau, sai thì đổi

Đi từ trái sang phải, so hai phần tử cạnh nhau, sai thứ tự thì đổi chỗ. Một lần đi hết mảng gọi là một lượt. Lặp cho tới khi một lượt không đổi chỗ lần nào.

Ví dụ

[5, 1, 4, 2, 8] sau một lượt thành [1, 4, 2, 5, 8]

Một lượt đi hết mảng

  1. So 5 và 1Sai thứ tự, đổi chỗ. Còn 1 5 4 2 8
  2. So 5 và 4Đổi tiếp. Còn 1 4 5 2 8
  3. So 5 và 2Đổi tiếp. Còn 1 4 2 5 8
  4. So 5 và 8Đúng rồi, giữ nguyên. Số 8 đã về đúng chỗ

Cờ dừng sớm

Vì sao nó chậm

Số phép so sánh tăng theo bình phương số phần tử: gấp đôi dữ liệu thì chậm gấp bốn. 100 phần tử tốn khoảng 5.000 lần so sánh, 10.000 phần tử tốn khoảng 50 triệu.

Tại chỗ và ổn định

Nó làm ngay trên mảng gốc, chỉ tốn thêm một biến tạm. Hai phần tử bằng nhau giữ nguyên thứ tự cũ, tính chất đó gọi là ổn định và cần khi bạn sắp theo nhiều khoá liên tiếp.

Bubble sort: được gì, mất gì

Ưu điểm

Code ngắn, đọc một lần là hiểu

Sắp xếp tại chỗ, và ổn định

Mảng đã đúng sẵn thì cờ dừng sớm cứu

Nhược điểm

n² phép so sánh, mảng lớn là chậm hẳn

Đổi chỗ nhiều hơn selection sort

Là công cụ dạy, không phải công cụ chạy

Lưu lại để chạy tay sau

Loạt bài thuật toán sắp xếp cho dev Việt Nam.

techtipstechtipsvnthuattoanlaptrinhhoclaptrinh
Đọc tiếp

Bài khác cùng chủ đề

Slide bìa: Hai lỗi Critical cho người lạ chạy code trên server Next.js: lên 16.4.1 hoặc 15.5.2809

Hai lỗi Critical cho người lạ chạy code trên server Next.js: lên 16.4.1 hoặc 15.5.28

Tin2′ đọc16.10
Slide bìa: Caveman: một lệnh để Claude Code trả lời ngắn, và lúc nào thì không đáng cài08

Caveman: một lệnh để Claude Code trả lời ngắn, và lúc nào thì không đáng cài

tutorial1′ đọc16.10
Slide bìa: Code Go không đọc body chậm gần 5 lần qua HTTP/1, Go 1.27 tự sửa10

Code Go không đọc body chậm gần 5 lần qua HTTP/1, Go 1.27 tự sửa

Giải thích2′ đọc15.10
Slide bìa: Node.js vá lỗi bảo mật mức HIGH ngày 21/10: máy bạn đang chạy bản nào?07

Node.js vá lỗi bảo mật mức HIGH ngày 21/10: máy bạn đang chạy bản nào?

Tin1′ đọc15.10

Mỗi ngày một bài mới.

Mẹo, giải thích và tin công nghệ cho sinh viên và dev mới đi làm. Một người viết, đăng đều.

Bài cũng được đăng lên TikTok, ở dạng slide.

TikTok@techtipsvn