在有序的整型数列中插入若干个数(数列中可以有零个元素),再插入过程中仍然有序。
特别说明:待数列最初数据个数不超过20个,后续插入的数据个数不超过10个。
输入
第一行是原始数列的元素个数n,
第二行是原始数列的n个整型元素值,以空格间隔。
第三行是待插入元素的个数m,
第四行是m个待插入元素值,以空格间隔。
输出
每次插入结束后打印当前数组,数字用空格隔开。
即输出共m行, 分别显示插入第1个数后、插入第2个数后、...、插入第m个数后数组的值,数组元素间用空格隔开,每行最后一个数字后面没有空格。
样例输入
3
1 8 12
5
7 5 4 10 14
样例输出
1 7 8 12
1 5 7 8 12
1 4 5 7 8 12
1 4 5 7 8 10 12
1 4 5 7 8 10 12 14
*/
#define SIZE 32
int *insert(int *a, int n);
int main()
{
int n, m, i, j;
int a[SIZE];
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]); //insert(a, n);之前是有序数列可以不用
scanf("%d", &m);
for (i = n + 1; i <= n + m; i++)
{
scanf("%d", &a[i]);
insert(a, i);
for (j = 1; j <= i; j++)
{
printf("%d", a[j]);
if (i != j)
putchar(' ');
}
putchar('\n');
}
return 0;
}
int *insert(int *a, int n)
{
int i, j, num;
for (i = 2; i <= n; i++)
{
num = a[i];
for (j = i - 1; j >= 1; j--)//保证之前的数据排序正确
{
if (a[j] < num)
break;
else
{a[j + 1] = a[j];
a[j] = num;}
}
}
return a;
}