一、 原理
插入排序这样理解:
默认排列结果由小到大的
1.数组arr有n个元素
2.从arr【0】和arr【1】开始,判断arr【2】的值,插入合适的位置
3.arr【3】和arr【0】,arr【1】,arr【2】比较,插入合适的位置
4.以此类推
二、 代码
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 (tem < arr[end])
{
arr[end + 1] = arr[end];
end--;
}
//比插入的数小,跳出循环
else
{
break;
}
}
//tem放到比插入的数小的数的后面
arr[end + 1] = tem;
//代码执行到此位置有两种情况:
//1.待插入元素找到应插入位置(break跳出循环到此)
//2.待插入元素比当前有序序列中的所有元素都小(while循环结束后到此)
}
}