二分查找
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); }
相关文章推荐
- 二分查找
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 旋转数组的二分查找
- 二分查找及变种
- 递归实现二分查找
- 二分查找
- Codeforces #380(Div.2)C.Road to Cinema【思维+二分查找】好题~
- 二分查找
- 二分查找
- 二分查找
- lower_bound()函数(二分查找)
- 查找算法:二分查找、顺序查找
- HDU 1969 Pie(二分查找)
- 算法学习---对象类型的数组二分查找实现
- 二分查找算法
- POJ 3061 Subsequence(二分查找 or 尺取法)
- 【专题总结】二分查找(持续更新)
- 二分查找(对半查找)的实现
- 二分查找的感悟
- 函数模板实现二分查找