![37b821ad62c927e8e7e4dc9bbeeb001e.png](https://img-blog.csdnimg.cn/img_convert/37b821ad62c927e8e7e4dc9bbeeb001e.png)
例题:
在一个一排好序(由小到大)的数组中查找待插入数据x应插入的位置,使其插入后,数组元素仍然保持由小到大的顺序。
问题分析:插入是数组的基本操作之一。实现数组元素的插入排序的的关键在于:找到实际应该插入的位置,然后依次移动插入位置及其后面的所有元素,腾出位置放入待插入的元素。
算法的描述:
step 1 输入插入前已排好序的数组元素
step 2 输入待插入的元素x
step 3 插入元素x到已排序数组中
step 3.1查找定位,确定元素x应插入的数组下标位置pos
step 3.2 将插入位置pos及其后面的所有元素后移一个位置,以便腾出位置pos
step 3.3 插入元素x到位置pos
step 4 输出插入x后的数组元素
插入排序算法如下图
![78ef8a36ba71ca02734f220c51fa5367.png](https://img-blog.csdnimg.cn/img_convert/78ef8a36ba71ca02734f220c51fa5367.png)
插入排序法示意图
先用数组名作为函数参数,编写的程序如下:
#include
#define N 11//能确保插入数据后数组不能越界的数组最大元素个数
void Insert(int a[],int n,int x);//函数声明
int main()
{
int a[N],x,i,n;
printf("请输入插入元素前的数组元素个数n(n<=10):");
scanf("%d