1.时间复杂度
n*n
2.逻辑分析
总的来说,是将数组分为2个部分,一个是有序部分,另一个是无序部分。将无序部分的数据依次取出,插入到有序部分,最终形成排序后的数组。
3.代码
template <class T>
void InsertArr(T* arr, int len)
{
for (int i = 1; i < len; ++i)
{
T temp = arr[i]; // 取出被比较值
int j = i - 1;
for (; j >= 0 && temp <= arr[j]; --j)
{
arr[j + 1] = arr[j]; // 将值往后推
}
arr[j + 1] = temp; // 多执行一次--j,所以需要j+1
}
}