直接插入排序的时间复杂度是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;
}
}