@techtipsvn
Thuật toán

Insertion sort: thuật toán n² duy nhất vẫn chạy trong thư viện chuẩn

Thuật toán n² duy nhất vẫn chạy thật

2026-08-2107 slide1 phút đọcGiải thích
Slide bìa: Insertion sort: thuật toán n² duy nhất vẫn chạy trong thư viện chuẩnSlide 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.

Nhận thêm một lá bài

  1. Cầm bàiBài trên tay đã đúng thứ tự sẵn
  2. Lá mớiNhận thêm một lá, chưa biết xếp đâu
  3. Tìm chỗDò từ phải sang trái tới đúng vị trí
  4. Chèn vàoĐẩy các lá lớn hơn sang phải rồi chèn

Phần bên trái luôn đúng thứ tự

Insertion sort coi phần bên trái mảng là đã sắp xếp. Nó lấy phần tử kế tiếp rồi chèn vào đúng chỗ trong phần đó. Phần đã sắp xếp dài thêm một sau mỗi bước.

Điểm mạnh thật

Mảng gần đúng thứ tự thì chạy gần như O(n)

Ngưỡng trong thư viện thật

Nơi dùngNgưỡngHằng số
JDK 847INSERTION_SORT_THRESHOLD
JDK 1744MAX_INSERTION_SORT_SIZE
Go12maxInsertion

Vì sao thư viện vẫn gọi insertion sort

Với đoạn vài chục phần tử, insertion sort thắng cả quick sort. Điều này không trái với O(n²). Big-O nói về xu hướng khi n lớn, không nói ai thắng trên mảng hai mươi phần tử.

Insertion sort được gì, mất gì

Ưu điểm

Mảng gần đúng thứ tự chạy gần như O(n)

Ổn định, và sắp xếp tại chỗ

Nhận dữ liệu đến dần, chèn tiếp là xong

Nhược điểm

Mảng ngẫu nhiên tốn khoảng n²/4 phép dịch

Dịch nhiều nên tốn khi phép ghi đắt

Chỉ hợp mảng nhỏ, luôn là bước phụ

Bài sau: merge sort

Hết nhóm n². Từ đây là nhóm n log n, bắt đầu bằng chia đôi.

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