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

Heap sort chậm hơn quick sort nhưng thư viện vẫn giữ nó, và đây là lý do

Vì sao introsort giữ nó làm phương án dự phòng cho quick sort.

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.

Heap là cây, không phải mảng

Heap là cây nhị phân mà mỗi nút luôn lớn hơn hoặc bằng hai con của nó. Hệ quả: phần tử lớn nhất luôn nằm ở đỉnh, và bạn lấy được nó ngay không cần tìm.

Ví dụ

Đỉnh 9, hai con 7 và 5, bốn cháu 3 4 2 1 — cha luôn lớn hơn con

Cây đó nằm sẵn trong mảng

  1. Mảng9 7 5 3 4 2 1 — bảy ô liên tiếp, không con trỏ nào
  2. ĐỉnhVị trí 0 là số 9, chính là gốc của cây
  3. Công thứcCon của vị trí i nằm ở 2i+1 và 2i+2
  4. Kiểm lạiCon của vị trí 0 là vị trí 1 và 2, tức 7 và 5

Lấy dần đỉnh xuống cuối mảng

Đổi chỗ đỉnh với phần tử cuối, coi như phần tử đó đã xong, rồi kéo phần tử mới lên đỉnh xuống đúng tầng của nó. Lặp n lần, mỗi lần tốn log n bước.

Vì sao introsort giữ heap sort

Nó là thuật toán duy nhất vừa đảm bảo n log n trong mọi trường hợp, vừa không cần bộ nhớ phụ. Khi quick sort đệ quy quá sâu, introsort đổi sang nó để chặn n².

Học heap dùng được nhiều hơn

Hàng đợi ưu tiên gần như luôn cài bằng heap, và bạn gặp nó nhiều hơn hẳn việc tự viết hàm sắp xếp: lập lịch job, tìm đường, gộp nhiều luồng log theo thời gian.

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

Ưu điểm

n log n cả ở trường hợp xấu nhất

Sắp xếp tại chỗ, bộ nhớ phụ O(1)

Không đệ quy nên không lo tràn ngăn xếp

Nhược điểm

Chậm hơn quick sort thực tế vì cache miss

Không ổn định

Phải hiểu heap trước khi hiểu sắp xếp

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