二分查找算法是什么
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(R[mid].key==K) { returnmid;//查找成功返回 } if(R[mid].key>;K) high=mid-1; //继续在 R[low..mid-1]中查找 else low=mid+1; //继续在 R[mid+1..high]中查找 } return-1; //当 low>;high 时表示查找区间为空,查找失败 } //BinSeareh [cpp]view plaincopy intBinSearch2(intarray[],intn,intv) { intleft,right,middle; left=-1,right=n; while(left+1!=right) { middle=left+(right-left)/2; if(array[middle]{ left=middle;
} return0; } 以上就是我们为大家提供的与二分查找算法有关的文章,是什么
这是我们为大家提供的一篇关于二分查找算法的文章,接下来就让我们 一起来了解一下吧! 二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明 问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先 与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续 查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的 元素,或者所查找的序列范围为空为止. [cpp]view plaincopy intBinSearch(SeqList*R,intn,KeyTypeK) { //在有序表 R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回 -1 intlow=0,high=n-1,mid; //置当前查找区间上、下界的初值 if(R[low].key==K) { return0; } while(low{ //当前查找区间 R[low..high]非空 mid=low+((high-low)/2); //使用(low+high)/2 会有整数溢出的问题
} else { right=middle; } } if(right>;=n||array[right]!=v) { right=-1; } returnright; } 参考资料 1.;>; 2.wiki 上关于二分查找的说明:en.wikipedia/wiki/Binary_search [cpp]view plaincopy intBinSearch1(intr[],intn,intk) //数组 r[1]~r[n]存放查找集合 { low=1;high=n; while(low{ mid=(low+high)/2; if(k elseif(k>;r[mid])low=mid+1; elsereturnmid;