Thuật toán

Heap sort: n log n trong mọi trường hợp, không tốn thêm bộ nhớ

Hiểu heap trước, rồi mới tới sắp xếp

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

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à gì

Heap là một cây nhị phân, mỗi nút có nhiều nhất hai con. Điều kiện duy nhất: giá trị ở mỗi nút luôn lớn hơn hoặc bằng hai con của nó. Nhờ vậy số lớn nhất luôn nằm ở đỉnh.

Chỗ hay nhầm

Bằng cũng được, nên dữ liệu trùng giá trị vẫn hợp lệ

Cây này nằm trong một mảng

Không cần con trỏ. Nút ở vị trí i có hai con ở 2i+1 và 2i+2. Cây và mảng là cùng một dữ liệu, chỉ là hai cách nhìn. Đó là lý do heap sort không cần bộ nhớ phụ.

Quy ước

Đếm từ 0

Sắp xếp bằng heap

  1. Dựng heapBiến cả mảng thành heap một lần
  2. Lấy đỉnhĐỉnh là số lớn nhất, đưa về cuối mảng
  3. Sift-downKéo phần tử mới ở đỉnh xuống đúng tầng
  4. Thu hẹpBỏ phần cuối ra, lặp lại với phần còn lại

Vì sao thư viện vẫn giữ heap sort

Introsort bắt đầu bằng quick sort. Khi đệ quy quá sâu, nó đổi sang heap sort. Heap sort đảm bảo n log n trong mọi trường hợp, nên nó là cái chặn cho trường hợp xấu nhất.

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ật, vì nhảy bộ nhớ

Không ổn định

Phải hiểu heap trước, khó đọc hơn hẳn

Bài cuối: counting sort

Thuật toán không so sánh gì cả, và đi vòng qua được giới hạn n log n.

techtipstechtipsvnthuattoanhoclaptrinhlaptrinh
Đọ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