Trình trực quan hóa Quick Sort
Quicksort hoạt hình với làm nổi bật pivot/phân vùng, điều khiển từng bước, tốc độ, nhập tùy chỉnh, bộ đếm trực tiếp và mã giả. Chạy ngay trong trình duyệt của bạn.
Code examples
Ready-to-copy reference implementations. Free to use in your own projects and assignments.
Cách dùng
- 1 Nhấn Play để xem từng lần phân vùng đặt pivot vào đúng vị trí và chia mảng quanh nó.
- 2 Dùng Step để tiến từng phép so sánh một và theo dõi con trỏ phân vùng.
- 3 Nhập các số của riêng bạn vào ô Custom input rồi nhấn Apply.
- 4 Theo dõi mã giả được làm nổi bật cùng bộ đếm so sánh / hoán đổi trực tiếp.
Vì sao dùng công cụ này
- Xem cách phân vùng quanh pivot dẫn dắt đệ quy chia để trị (divide-and-conquer).
- Hiểu vì sao quicksort thường là thuật toán sắp xếp so sánh nhanh nhất trong thực tế.
- Các chỉ số cho thấy trường hợp xấu nhất O(n²) khi pivot chia mảng kém (ví dụ: dữ liệu đã sắp xếp sẵn).
- Chạy hoàn toàn trong trình duyệt của bạn. Không cần đăng ký, không cần tải lên.
Câu hỏi thường gặp
Quicksort là gì?
Quicksort chọn một pivot, phân vùng mảng sao cho các phần tử nhỏ hơn nằm bên trái và lớn hơn nằm bên phải, sau đó sắp xếp đệ quy từng bên. Công cụ này sử dụng lược đồ Lomuto với phần tử cuối cùng làm pivot.
Độ phức tạp thời gian của quicksort là gì?
Trung bình là O(n log n), nhưng trường hợp xấu nhất là O(n²) khi pivot liên tục là phần tử nhỏ nhất hoặc lớn nhất. Chọn pivot ngẫu nhiên hoặc theo median-of-three giúp tránh điều này trong thực tế.
Quicksort có ổn định (stable) không?
Không. Các phép hoán đổi trong quá trình phân vùng di chuyển phần tử khắp mảng và có thể làm thay đổi thứ tự của các giá trị bằng nhau. Vẫn có các biến thể quicksort ổn định nhưng chúng sử dụng thêm bộ nhớ.
Vì sao quicksort lại phổ biến đến vậy?
Nó sắp xếp tại chỗ (in place) với hiệu năng cache tốt và hằng số nhỏ, nên thường nhanh hơn merge sort hay heap sort trên dữ liệu thực tế, dù có giới hạn trường hợp xấu nhất.
Trình trực quan hóa Quick Sort là gì?
Trình trực quan hóa Quick Sort mô phỏng hoạt ảnh của thuật toán quicksort: chọn một pivot, phân vùng các phần tử quanh nó, rồi sắp xếp đệ quy từng bên. Công cụ này sử dụng lược đồ phân vùng Lomuto và cho thấy vì sao quicksort có độ phức tạp trung bình O(n log n) nhưng có thể rơi vào O(n²) khi chọn pivot kém.
Tính năng
Hoạt ảnh từng bước
Xem quá trình chọn pivot, phân hoạch và đệ quy trên từng mảng con.
Độ phức tạp
Thời gian: trung bình O(n log n), xấu nhất O(n²). Không gian: trung bình O(log n). Tại chỗ (in-place); không ổn định (not stable).
Riêng tư 100%
Chạy hoàn toàn trên trình duyệt của bạn — không có dữ liệu nào được tải lên.
Ví dụ
Input
[5, 2, 8, 1]
Output
choose pivot, partition into < and ≥, recurse → [1, 2, 5, 8] (sorted)
Trường hợp sử dụng
-
1
Hiểu về phân hoạch
Xem cách các phần tử được chia thành nhóm < pivot và ≥ pivot.
-
2
Cạm bẫy trường hợp xấu nhất
Xem cách chọn pivot ngây thơ trên dữ liệu đã sắp xếp làm giảm hiệu năng xuống O(n²).
-
3
Vì sao nhanh trong thực tế
Xem cách chọn pivot ngẫu nhiên hoặc median-of-three giúp tránh trường hợp xấu nhất.
Công cụ trực quan hóa quicksort của Zerethon minh họa thuật toán chia để trị ngay trên trình duyệt: chọn phần tử chốt (pivot), phân hoạch các phần tử xung quanh nó, rồi đệ quy. Quicksort chạy với độ phức tạp trung bình O(n log n) nhưng giảm xuống O(n²) trong trường hợp xấu nhất (ví dụ: chọn pivot ngây thơ trên dữ liệu đã sắp xếp sẵn); thuật toán sử dụng trung bình O(log n) không gian ngăn xếp, thực hiện tại chỗ (in-place) và không ổn định (not stable). Việc chọn pivot tốt (ví dụ: median-of-three hoặc ngẫu nhiên) giúp thuật toán nhanh trong thực tế.
- Danh mục
- Thuật toán
- Giá
- Miễn phí
- Quyền riêng tư
- Chạy trên trình duyệt
- Đăng ký
- Không cần
Tài liệu tham khảo
- MIT OCW 6.006 — Nhập môn Thuật toán (CLRS) — MIT OpenCourseWare
- VisuAlgo — Sắp xếp — VisuAlgo (NUS)
- Quicksort (C. A. R. Hoare, 1961) — Wikipedia
Quyền riêng tư
Dữ liệu của bạn không bao giờ rời khỏi trình duyệt trừ khi được nêu rõ. Trình trực quan hóa Quick Sort chạy hoàn toàn phía client — không tải lên máy chủ, không ghi log, không theo dõi dữ liệu bạn nhập.
Mới làm quen? Đọc giải thích từng bước kèm phân tích Big-O: Tìm hiểu Sorting Algorithms →
So sánh
Công cụ liên quan
Trình mô phỏng Bubble Sort
Mô phỏng bubble sort có hoạt ảnh với các nút điều khiển từng bước, tốc độ, dữ liệu đầu vào tùy chỉnh, bộ đếm so sánh/hoán đổi trực tiếp và pseudocode. Chạy hoàn toàn trong trình duyệt của bạn.
Mở công cụTrình trực quan hóa Insertion Sort
Insertion Sort hoạt hình với các nút điều khiển từng bước, tốc độ, dữ liệu đầu vào tùy chỉnh, bộ đếm so sánh/ghi trực tiếp và mã giả (pseudocode). Chạy hoàn toàn trên trình duyệt của bạn.
Mở công cụTrình trực quan hóa Selection Sort
Selection Sort hoạt hình với các nút điều khiển từng bước, tốc độ, dữ liệu đầu vào tùy chỉnh, bộ đếm so sánh/hoán đổi trực tiếp và mã giả (pseudocode). Chạy hoàn toàn trên trình duyệt của bạn.
Mở công cụTrình trực quan hóa Merge Sort
Mô phỏng merge sort có hoạt ảnh với điều khiển từng bước, tốc độ, dữ liệu đầu vào tùy chỉnh, bộ đếm so sánh/ghi trực tiếp và mã giả (pseudocode). Chạy hoàn toàn trên trình duyệt.
Mở công cụXây dựng, chia sẻ và phát triển trên Zerethon Social
Đăng ký miễn phí. Kiếm điểm, sưu tầm thành tựu và kết nối với nhà sáng tạo khắp thế giới.