Thuật toán sắp xếp · Counting sort

Counting sort phá giới hạn n log n bằng cách không so sánh gì cả

Giới hạn đó chỉ áp cho thuật toán so sánh. Counting sort thì đếm.

2026-08-1908 slide2 phút đọcGiải thích
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8
vuốt, bấm thanh trên, hoặc phím mũi tên01 / 08

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

Đếm, rồi rải lại

Có 1000 sinh viên, điểm từ 0 đến 10. Đi một lượt đếm mỗi mức điểm có bao nhiêu người, rồi rải lại theo thứ tự điểm. Không có phép so sánh nào giữa hai sinh viên.

Ví dụ

1000 phần tử, 11 ô đếm. Một lượt đếm, một lượt rải.

Vì sao nó vượt được giới hạn

Định lý n log n nói về thuật toán chỉ hỏi được một câu: a có trước b không. Counting sort nhìn thẳng vào giá trị và dùng nó làm chỉ số mảng, nên định lý không áp cho nó.

k là độ rộng, không phải n

k bằng giá trị lớn nhất trừ nhỏ nhất cộng một. Điểm 0 đến 10 thì k bằng 11, dù có một triệu sinh viên. Chi phí là O(n + k), nên k nhỏ mới là chỗ nó thắng.

Khi nào đừng dùng

Khoá là ID người dùng chạy tới hàng tỉ: k lớn hơn n hàng nghìn lần, và bạn cấp phát một mảng đếm khổng lồ gần như rỗng. k xấp xỉ n thì vẫn tốt.

Nó là nền của radix sort

Radix sort sắp theo từng chữ số, mỗi vòng gọi counting sort trên đúng một chữ số. Vòng nào cũng phải ổn định, nếu không thứ tự các vòng trước bị phá mất.

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

Ưu điểm

O(n + k), thắng khi khoảng giá trị hẹp

Ổn định nếu cài đúng, dùng được cho radix

Không đệ quy, code ngắn và đọc thẳng

Nhược điểm

Chỉ dùng được khi khoá là số nguyên

Tốn bộ nhớ O(k), khoảng rộng là hỏng

Không sắp được theo thứ tự tự định nghĩa

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: Tin công nghệ 29/08: mô hình mở chạy chip Trung Quốc và Meta dàn xếp 18 tỉ đô09

Tin công nghệ 29/08: mô hình mở chạy chip Trung Quốc và Meta dàn xếp 18 tỉ đô

Tin2′ đọc31.08
Slide bìa: Next.js vá hai lỗ hổng critical: nâng lên 16.3.3 hoặc 15.5.24, và ảnh AVIF bị tắt07

Next.js vá hai lỗ hổng critical: nâng lên 16.3.3 hoặc 15.5.24, và ảnh AVIF bị tắt

Tin1′ đọc31.08
Slide bìa: 4 trong 6 tuyến cáp biển đang lỗi: vì sao npm install của bạn chậm hẳn07

4 trong 6 tuyến cáp biển đang lỗi: vì sao npm install của bạn chậm hẳn

Tin1′ đọc31.08
Slide bìa: GitHub trending tuần này: archify +18.103 sao, và repo thứ hai không chạy được gì09

GitHub trending tuần này: archify +18.103 sao, và repo thứ hai không chạy được gì

Tin2′ đọc31.08

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