直接插入排序思想: 将数据分成两部分,前一部分已经有序(初始只有一个数据),后一部分无序,从后一部分数据中拿出一个数据插入有序数据中使有序部分数据依旧有序。
时间复杂度: O(n^2)
空间复杂度: O(1)
稳定性: 稳定
void InsertSort(int* arr, int len)
{
int tmp = 0;
for (int* p = arr + 1; p < arr + len; p++)
{
tmp = *p;
for (int* q = p - 1; q >= arr; q--)
{
if (*q <= tmp)
{
*(q + 1) = tmp;
break;
}
*(q + 1) = *q;
if (q == arr) *q = tmp;
}
}
}
排序结果: