#include<stdio.h>
void bininsert(int A[],int x,int n)
{
int l=0,h=n-1,mid,i;
int inplace;
int find=0;
while(l<=h&&find==0)
{
mid=(l+h)/2;
if(x<A[mid])
h=mid-1;
else if(x>A[mid])
l=mid+1;
else
find=1;
}
if(find)
inplace=mid;
else
inplace=l;
for(i=n-1;i>=inplace;i--)
A[i+1]=A[i];
A[inplace]=x;
}
main()
{
int a[20],i,x,n;
for(i=0;i<10;i++)
a[i]=i;
printf("请输入要插入的值:");
scanf("%d",&x);
bininsert(a,n,x);
if(a[x]<=n)
{
for(i=10;i>=x;i--)
a[i+1]=a[i];
a[x]=n;
}
for(i=1;i<=11;i++);
printf("%d",a[i]);
}
int i,x=2;
int a[11]={1,3,5,6,8,11,15,20,26,41};
此时便会出现错误
任待完善。。。
我改不好,麻烦直接帮我改正确来。谢谢
追答#include
void bininsert(int A[],int x,int n)
{
int l=0,h=n-1,mid,i;
int inplace;
int find=0;
if(x>A[n-1]) /*x直接插在数组的最后一个元素之后*/
A[n]=x;
else if(xA[mid])
l=mid+1;
else /*x刚好与数组中的元素A[mid]相等*/
find=1;
}
inplace=mid;
}
for(i=n-1;i>=inplace;i--)
A[i+1]=A[i];
A[inplace]=x;
}
void main()
{
int i,x=13;
int a[11]={1,2,5,6,8,11,15,20,26,41};/*实验使用的数据,11个位置存放10个数据*/
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
bininsert(a,x,10);
for(i=0;i<11;i++)/*注意你原来的程序,此处多了个分号,造成无限循环!*/
printf("%d ",a[i]);
}
好厉害,我还有一个程序,可以帮我完善一下吗,,
本回答被提问者采纳