一、InsertSort--插入排序(先拆成单趟的,再走整体)
1.思路:拆成单趟的,再写整体的
时间复杂度:O(N^2)
最优情况:接近顺序有序 O(N)
最坏情况:逆序 O(N^2)
2.实现
void InsertSort(int* a, int n)
{
for (int i = 0; i < n - 1; ++i)
{
// [0,end]有序,把end+1位置的值插入,保持有序
int end = i;
int tmp = a[end + 1];
while (end >= 0)
{
if (tmp < a[end])
{
a[end + 1] = a[end];
--end;
}
else
{
break;
}
}
a[end + 1] = tmp;
}
}