已知一个排好序的数组(数组元素从小到大),现从键盘输入一个数,将该数按照原来的排序规律插入进数组中。
C语言程序如下(以10个数从小到大为例):
#include <stdio.h>
#define N 10
int main()
{
int a[N]={0},b[N+1]={0};
int c;
unsigned char i;
unsigned char left=0,right=N-1,mid;
printf("请输入排好序的数组(数组元素从小到大):");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
printf("请输入一个整数:");
scanf("%d",&c);
if(c<a[0]||c>a[N-1])
{
if(c<a[0]) right=0;
else right=N;
}
else
{
do
{
mid=(left+right)/2;
if(c<a[mid])
right=mid;
else left=mid;
}while(left+1!=right);
}
for(i=0;i<N+1;i++)
{
if(i<right) b[i]=a[i];
else
{
if(i==right) b[i]=c;
else b[i]=a[i-1];
}
}
printf("插入新数后数组元素新顺序:");
for(i=0;i<N+1;i++) printf("%d ",b[i]);
return 0;
}
程序运行结果如下:

欢迎大家批评指正!!!
2639

被折叠的 条评论
为什么被折叠?



