直接插入排序的時間複雜度是O(n^2),是穩定排序,這個算法思路也非常簡單,就和玩撲克牌一樣。
從第二個數開始操作,也就是數組的下標從1開始,與前面的數進行對比,如果比前面的某個元素要小,則數組裏的該元素向後順序挪動一格,索引號減一,否則把數插入上一個索引號的位置。
核心代碼如下:
void InsertSort(vector<int> &Input)
{
int size = Input.size();
for (int i = 1; i < size; i++)
{
int temp = Input[i];
int j = i - 1;
while (j >= 0 && temp < Input[j])
{
Input[j+1] = Input[j];
j--;
}
Input[j + 1] = temp;
}
}