折半查找法查找次数(折半查找法查找一个不存在的元素)
大家好,小活来为大家解答以上的问题。C语言折半查找法,折半查找法这个很多人还不知道,现在让我们一起来看看吧!
1、折半查找法是算法一种,可以被任何计算机语言使用。
2、用C语言自然也可以实现。
3、定义:在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。
4、搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。
5、如果在某一步骤数组为空,则代表找不到。
6、这种搜索算法每一次比较都使搜索范围缩小一半。
7、2、查找规则:折半查找法是效率较高的一种查找方法。
8、假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=0,上限为h=4,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限h=m-1,到上半段继续查找;如此重复前面的过程直到找到或者l>h为止。
9、如果l>h,说明没有此数,打印找不到信息,程序结束。
10、3、C语言参考代码:int bin_search(int A[],int n,int key){//在长度为n的数组A 中折半查找值为key的元素,并返回下标值。
11、如果不存在则返回-1. int low,high,mid; low = 0; high = n-1;//初始low和high为数组的两端。
12、 while(low<=high) { mid =(low + high)/2;//查找中心点。
13、 if(A[mid]==key)return mid;//已找到,返回下标值。
14、 if(A[mid] 15、 low =mid + 1; } if(A[mid]>key){//中点位置比key值大,以mid-1为新的上限值。 16、 high= mid - 1; } } return -1;//未找到,返回-1.}。 本文到此分享完毕,希望能帮助到大家。
扫描二维码推送至手机访问。
版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!