直接插入排序
思想:将数据分成两部分,前一段是已经有序的数据(初始时,前一段数据只有一个),后一段都是无序数据。从无序数据中拿一个数据(左边的第一个数据),插入到前一段的有序数据中,并且使得有序数据段依旧有序。重复上述过程,直到无序数据没有数据。
时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性: 稳定
void InsertSort(int* arr, int len)
{
int tmp = 0, i, j;
for (i = 1; i < len; ++i)//未排序区间
{
if (arr[i] < arr[i - 1])//逆序
{
tmp = arr[i];
for (j = i - 1; arr[j] > tmp; --j)//搬移数据元素
{
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;//插入数据
}
}
}