结合上图会比较容易理解,这里再概括一下:数组 num[]={1,4,0,2,6,5,3}
当 end=0,num[end]=1,temp[end+1]=4,当num[end]>temp,就把值赋值给num[end+1],当不满足end>=0 时就把temp的值赋值给num[end+1]
可以试着自己走几步
上代码
void InsertSort(int* a, int len)
{
for (int i = 0; i < len-1; i++)
{
int end = i;
int temp = a[i + 1];
while (end >= 0)
{
if (a[end] > temp)
a[end + 1] = a[end--];
else
break;
}
a[end + 1] = temp;
}
}
void TextInsertSort()
{
int a[] = { 1,4,0,2,6,7,5,3 };
int len = sizeof(a) / sizeof(a[0]);//计算数组的元素
InsertSort(a, len);
printf("\n插入排序\n");
Print(a, len);//打印函数
}
int main()
{
TextInsertSort();
return 0;
}