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

Quick sort không phải luôn nhanh nhất: gặp mảng đã sắp xếp sẵn nó về đúng n²

Chỗ quyết định không phải thuật toán, mà là cách chọn pivot.

2026-08-1907 slide2 phút đọcGiải thích
Slide bìa: Quick sort không phải luôn nhanh nhất: gặp mảng đã sắp xếp sẵn nó về đúng n²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.

Một lượt phân hoạch

  1. Chọn mốc5 2 8 1 9 3 7 4 — lấy 4 làm pivot
  2. Đẩy hai phíaSố nhỏ hơn 4 dồn sang trái, lớn hơn dồn sang phải
  3. Đặt pivot2 1 3 · 4 · 5 8 9 7 — số 4 về đúng chỗ vĩnh viễn
  4. Làm tiếpLặp lại đúng như vậy cho hai phía, độc lập nhau

Nhanh nhờ đọc bộ nhớ liên tục

Phân hoạch quét mảng từ hai đầu vào giữa, nên CPU đọc gần như tuần tự và ít phải chờ. Cùng n log n với merge sort, nhưng không phải cấp phát và chép sang mảng phụ.

Trường hợp xấu nhất là n²

Chọn pivot ở phần tử đầu rồi gặp mảng đã sắp xếp sẵn: mỗi lần chia được một bên rỗng, một bên n-1. Thành n tầng thay vì log n tầng, tức là đúng n².

Thư viện thật không dùng quick sort thuần

C++, Go và Rust chạy introsort hoặc pdqsort: vẫn là quick sort, nhưng đếm độ sâu đệ quy và đổi sang heap sort khi quá sâu. Một cái lưới để n² không xảy ra.

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

Ưu điểm

Nhanh nhất thực tế với mảng ngẫu nhiên

Tại chỗ, chỉ tốn log n cho ngăn xếp

Mặc định cho sắp xếp không ổn định

Nhược điểm

Xấu nhất O(n²) khi pivot chia lệch mọi lần

Không ổn định, phần tử bằng nhau có thể đảo

Đệ quy sâu có thể tràn ngăn 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: 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