插入排序的思路:假设前面已经有i节点是有序的,那么就从第i+1个节点开始,插入到前面的i个节点的合适的位置中。
由于第一个元素自身总是有序的,因此从第2个开始,不断插入前面的有序序列,直到全部排列完毕
![](https://i-blog.csdnimg.cn/blog_migrate/1b8859a422071b10e91727d4c95854c8.png)
void insertSort(int *arr,int len)//int *arr = arr
{
int temp;
int i,j;
for(i=1;i<len;i++) //从左到右遍历
{
temp = arr[i];
for(j=i-1;j>=0;j--) //从右到左遍历
{
//找到第一个比temp小的,插在它的后面
if(arr[j] < temp)
break;
else
arr[j+1] = arr[j]; //交换位置
}
arr[j+1] = temp;//插入在他的后面
show(arr,len);
}
}
int main()
{
int arr[5] = {15,3,6,9,2};
int len = sizeof(arr)/sizeof(arr[0]);//总长/单个长度=总个数
insertSort(arr,len);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6b26ddc8f37a6e61e6dc2dd690729e16.png)