题目:
采用插入排序法,在一升序序列中插入另一序列,并保持其仍然是升序排列
思路分析:
- 为插入的数组留足够空
- 降序遍历a数组,当有一个a[i]小于插入的数,则将数插入,将数组长度加1,并退出循环,(若不退出,之后的数全被替换)
- 输出时注意不将0输出
代码实现:
#include<stdio.h>
int main()
{
int a[100] = {10, 14, 15, 18, 19, 21, 22, 31, 32, 35};
int b[3] = {17, 55, 32};
int i = 0, j = 0, lenth = 9;
int k = 0;
for(i = 0; i < 3; i++)
{
for(j = lenth; j >= 0; j--) //lenth定义字符串a长度,在成功插入一个后要加长
{
if(b[i] > a[j])
{
for(k = lenth + 1; k >= j + 1; k--)
{
a[k+1] = a[k];
// printf("%d\n",k);
}
a[j+1] = b[i];
lenth += 1;
break;
}
}
}
for(i = 0; i < 13&& a[i] != 0; i++)
{
printf("%d ",a[i]);
}
return 0;
}