现在的位置: 首页 > 综合 > 正文

二分查找法

2013年11月07日 ⁄ 综合 ⁄ 共 706字 ⁄ 字号 评论关闭

在此发表一个模本,希望对各位有用;

#include <stdio.h>
#define N 10//序列个数
void main()
{
int num[N];//查找的数据
int sel;//要找的数
int top;//顶 
int bot;//底
int mid;//中间
int flag=-1;
int i;
printf("请输入%d个数据!/n",N);
for(i=0;i<N;i++)
{
   while(1)
   {
    scanf("%d",&num[i]);
    if(i>0)
    {
     if(num[i]<num[i-1])
      printf("输入要按升序!重输吧!/n");
     else
      break;
    }
    else
     break;
   }

}
puts("请输入要查找的数:");
scanf("%d",&sel);
if(sel>num[N-1]||sel<num[0])
   printf("无%d此数!/n",sel);
else
{
   top=N-1;
   bot=0;
   while(top>=bot)
   {
    mid=(top+bot)/2;
    if(sel==num[mid])
    {
     flag=mid;
     break;
    }
    else if(num[mid]>sel)
    {
     top=mid-1;
    }
    else
    {
     bot=mid+1;
    }
   }
   if(-1==flag)
   {
    printf("无%d此数!/n",sel);
   }
   else
   {
    printf("%d在原数组中为第%d个数!/n",sel,flag+1);
   }
}
}
 

抱歉!评论已关闭.