1. 题目
插入排序(Insertion Sort)。用函数编程实现在一个按升序排序的数组中查找x应插入的位置,将x插入数组中,使数组元素仍按升序排列。
**输入格式要求:“%d” 提示信息:“Input array size:” “Input array:” “Input x:”
**输出格式要求:“After insert %d:\n” “%4d”
程序运行示例如下:
Input array size:5
Input array:1 3 5 7 9
Input x:4
After insert 4:
1 3 4 5 7 9
2. 思路
从后往前遍历,判断当前位置是否是要插入的目标位置,如果是目标位置则插入,否则将当前位置内容往后移一位。这样可以省下一重循环。
3. 代码实现
#include <stdio.h>
#include <stdlib.h>
#define N 50
int main()
{
int a[N], i, n, x;
printf("Input array size:");
scanf("%d", &n);
printf("Input array:");
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
printf("Input x:");
scanf("%d", &x);
for (i = n - 1; i >= 0; i--)
{
if (a[i] < x)
{
a[i + 1] = x;
break;
}
else
a[i + 1] = a[i];
}
printf("After insert %d:\n", x);
for (i = 0; i < n + 1; i++)
{
printf("%4d", a[i]);
}
return 0;
}