您的位置:首页 > 其它

二分查找

2017-05-24 21:47 141 查看
二分查找就是折半查找,其基本思想是:首先选取有序表中间位置的记录,将其关键字与给定关键字key进行比较,若相等,则查找成功;若key值比关键字值大,则要找的元素一定在右子表中,继续对右子表进行折半查找;若key值比关键字值小,则要找的元素一定在左子表中,继续对左子表中进行折半查找。如此递推,直到查找成功或失败。

#include<stdio.h>

void binary_search1(int key,int a[],int n)
{
int low,high,mid,count=0,count1=0;
low=0;
high=n-1;
while(low<=high)                 //当查找范围不为0时执行循环体语句
{
count++;                    //记录查找次数
mid=(low+high)/2;           //求中间位置
if(key<a[mid])              //key小于中间值时确定左子表范围
high=mid-1;
else if(key>a[mid])         //key大于中间值时确定右子表范围
low=mid+1;
else if(key==a[mid])        //查找成功
{
printf("查找成功!\n 查找%d次。a[%d]=%d",count,mid,key);
//输出查找次数及所在位置
count1++;               //记录查找成功次数
break;
}
}
if(count1==0)                   //判断是否查找成功
printf("查找失败!");
}

void main()
{
int i,key,a[100],n;
printf("请输入数组的长度:\n");
scanf("%d",&n);
printf("请按序输入数组元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("请输入你想查找的元素:\n");
scanf("%d",&key);
binary_search1(key,a,n);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分查找 搜索