题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
像这种题目给的条件有点模糊,与一些指示明确的比赛题目不一样。
所以我们先暂定一个升序数组 {1,2,4,5,8}, 因为有5个元素,所以我们定义时按照题目要求,应该给其多加一个元素。也就是a[6]={1,2,4,5,8}。
然后按照从大至小的顺序让插入数b与a[i]进行对比排列,大的数赋值给a[i+1], 然后依次进行比较。
为什么要赋值给a[i+1]呢,举个简单例子
b值为6,a[5]也就是8,当b<a[5],就将a[5]赋值给a[6]。而a[5]的值就空了出来,
b又继续和5(a[4])进行比较,如果b大于a[4]呢,就将b赋值给a[5],然后成功结束,直接输出。
#include<stdio.h>
int main()
{
int n=6,i=0,b=0,temp=0;
int a[6]={1,2,4,5,8}; //一个升序变量,数值为6,但只定义了5个,还留着一个
scanf("%d",&b);
for(i=n-2;i>=0;i--) //循环5次,降序输出。
{
if(a[i]>b) //如果a[i]>b,
{
a[i+1]=a[i]; //将a[i]赋值给a[i+1]
}
else
{
a[i+1]=b; //如果b>a[i],将b赋值给a[i+1]
break;
}
}
for(i=0;i<n;i++)
{
printf("%d\t",a[i]);
}
system("pause");
return 0;
}