折半查找插入

插入的经典:

#include<stdio.h>
#define N 1000
int main()
{
void bi_search(int a[],int n,int x);
int a[N],i,m,x;
printf("please input the length:");
scanf("%d",&m);
printf("please input a[0]:\n");
scanf("%d",&a[0]);
i=1;
while(i<m)
{
scanf("%d",&a[i]);
if(a[i]>=a[i-1])
i=i+1;
else printf("enter this number again:\n");

}
for(i=0;i<m;i++) printf("%d \n",a[i]);
printf("please input the num you want search:\n");
scanf("%d",&x);
bi_search(a,m,x);
return 0;
}
void bi_search(int a[],int n,int x)
{
int bot=0,top=n-1,mid,find=0,i,j,t1,t2;
do
{

mid=(top+bot)/2;
if(a[mid]==x)
find=1;
else if (a[mid]>x)
top=mid-1;
else
bot=mid+1;
}while(find==0&&bot<=top);
if(find==0)
{
printf("no search\n");
if(x>a[n-1])
{a[n]=x;
for(i=0;i<=n;i++)
printf("%d ",a[i]);}

else
{
for(i=0;i<n;i++)
{
if(a[i]>x)
{
t1=a[i];
a[i]=x;
for(j=i+1;j<n+1;j++)
{
t2=a[j];
a[j]=t1;
t1=t2;
}
for(i=0;i<n+1;i++)
printf("%d ",a[i]);
break;
}
}
}
}
else if(find==1)
printf("It is the %dst number\n",mid);

}

 

转载于:https://www.cnblogs.com/SSYYGAM/p/4212482.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值