void InsertSort(int* a, int n);
从i=0开始遍历,每次i之前的序列都是有序的,通过判断当前i的值能够在i之前哪个位置,找到后直接插入,
为什么直接插入排序最坏的情况是n^2?
如果一个开始原序列是降序,想排为升序
第一个循环是n,第二个循环最坏是n,所以是最大n^2
void InsertSort(int* arr, int n) {
for (int i = 0; i < n-1; i++) {
int end = i;
int tem = arr[end + 1];
while (end >= 0) {
if (arr[end] > tem) {
arr[end + 1] = arr[end];
end--;
}
else
{
break;
}
}
arr[end + 1] = tem;
}
}