Trạng thái mô phỏng
Đang dừng
Biến Key tạm:
-
Chưa xử lý
Đã có thứ tự
Vị trí ô trống (Hole)
Key lơ lửng phía trên
Đang so sánh / Dịch chuyển / Đang xét
TIẾN ĐỘ THUẬT TOÁN
Bước: 0 / 0
0.5s / bước
12 phần tử
Chi tiết thao tác hiện tại
Khởi tạo mảng
Bắt đầu mô phỏng thuật toán...
Các biến lưu trữ & Chỉ số đo lường
Biến i
-
Chỉ số ngoài
Biến j
-
Chỉ số quét trong
Biến key
-
Giá trị chèn
Số lần so sánh giữa các cặp phần tử:
0
Số lần dịch chuyển / Ghi đè bộ nhớ:
0
Mã Giả Thuật Toán (Pseudocode)
Algorithm
0:
insertionSort(arr, n):
1:
for i = 2 to n:
2:
key = arr[i]
3:
j = i - 1
4:
while j >= 1 and arr[j] > key:
5:
arr[j + 1] = arr[j]
6:
j = j - 1
7:
arr[j + 1] = key
8:
// Hoàn thành mảng được sắp xếp
Phân Tích Thuật Toán
Ý tưởng cốt lõi:
Thuật toán xây dựng một phân đoạn đã sắp xếp ở đầu mảng. Với mỗi phần tử mới (key), nó duyệt ngược về trước để tìm "vị trí chính xác" bằng cách dịch chuyển các phần tử lớn hơn sang bên phải một đơn vị, sau đó "chèn" key vào đúng lỗ trống đó.
ĐỘ PHỨC TẠP THỜI GIAN
Best Case: O(n)
Mảng đã có thứ tự sẵn
Worst Case: O(n²)
Mảng có thứ tự đảo ngược
ĐỘ PHỨC TẠP KHÔNG GIAN
Space: O(1)
Sắp xếp tại chỗ (In-place)
TÍNH ỔN ĐỊNH
Có (Stable)