khi chúng ta lập trình chúng ta học chúng ta phải hiểu được ý tưởng của người viết sau khi hiểu được ý tưởng rồi chúng ta sẽ xem họ code như thế nào sau đó tìm hiểu và cuối cùng phải tự code lại theo suy nghĩ của mình rồi debug đó là cách học hiểu quả nhất
void insertSort(int a[],int n)
{
//ý tưởng của sắp xếp chèn là cái nào đã sắp xếp thì bỏ qua cái nào chưa thì xem nó cần chèn ở đâu trong những cái đã sắp xếp nếu không cần chèn thì để nó luôn ở vị trí hiện tại để suy nghĩ và code như thế này thực sự người suy nghĩ ra được thuật toán này rất giỏi, não có sạn
//trước tiên lấy ra phần tử chưa được chèn để đi so sánh với cái danh sách đã được sắp xếp
// dịch chuyển các phần tử sau đi tiếp
//chèn
for (int i = 1; i < n; i++)
{
int j = i - 1;//lấy phần tử đứng trước để so sánh
int t = a[i];//lấy phần tử  chưa được sắp xếp
while (j > 0 && t < a[j])
{
a[j + 1] = a[j];//chúng ta chuyển luôn vừa chuyển vừa giảm
j--;//so sánh với phần tử trước nữa
}
a[j + 1] = t;//có nghĩa nó lấy ra so sánh nhưng nó chưa chèn vào vị trí phù hợp
}
}