@techtipsvn
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 bìa: Heap sort: n log n trong mọi trường hợp, không tốn thêm bộ nhớSlide 2Slide 3Slide 4Slide 5Slide 6Slide 7
cuộn, vuốt, hoặc phím ←→01 / 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: React Native 0.88: thêm SceneDelegate trước khi build bằng Xcode 2709

React Native 0.88: thêm SceneDelegate trước khi build bằng Xcode 27

feature2′ đọc19.10
Slide bìa: Copilot ngừng Claude Opus 4.8, Opus 5 và GPT-5.6 Terra ngày 16/11: đổi sang model nào07

Copilot ngừng Claude Opus 4.8, Opus 5 và GPT-5.6 Terra ngày 16/11: đổi sang model nào

Tin1′ đọc18.10
Slide bìa: Review bằng AI khiến PostgreSQL 19 gỡ 8–10 tính năng? Người viết code kể lại09

Review bằng AI khiến PostgreSQL 19 gỡ 8–10 tính năng? Người viết code kể lại

Tin2′ đọc17.10
Slide bìa: AVIF nhẹ hơn, JPEG XL giữ ảnh .jpg cũ: chọn định dạng ảnh nào cho web?08

AVIF nhẹ hơn, JPEG XL giữ ảnh .jpg cũ: chọn định dạng ảnh nào cho web?

Giải thích2′ đọc17.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