Đơn giản vầy thôi
Bạn có một mảng chứa hầm bà lằng.
unsortedArray -> [1][9][6][2][3][6][9][0][5][4]
Bạn lấy [T] là một biến chứa thằng cuối cùng của phần mảng đã sắp xếp (bắt đầu sẽ là thằng unsortedArray[0]) và một biến /P/ làm vị trí (ngay sau thằng [T])
Sau đó bạn xét: Nếu thằng ở /P/ mà nhỏ hơn [T] thì bạn tạo một khoảng nhỏ để nhét thằng [P] vào sau [T]
[1][9][6][2][3][6][.... -> đùn nhau ra
[1] [ ... ] [9][6][2][3][...
/ <----- \
[1] [ ... ] [9][6][2][3][...
[1][6][9][2][3][...
Như vậy th.
Trong đoạn
for (int i = 1; i < n; i++) //việc sắp xếp
{
int x = a[i]; // đây là [T]
int j = i; // đây là /P/
while (j > 0 && a[j - 1] > x) //đùn nhau ra để tạo khoảng trống
{
a[j] = a[j - 1]; //lấp khoảng trống
j--;
}
a[j] = x;
}
Có gì chưa hiểu cứ reply