二分查找法
发布日期:2021-06-30 19:10:07 浏览次数:3 分类:技术文章

本文共 1362 字,大约阅读时间需要 4 分钟。

二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止.

int BinSearch(SeqList * R, int n , KeyType K ){ //在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1   int low=0,high=n-1,mid; //置当前查找区间上、下界的初值   if(R[low].key==K)   {   return 0 ;   }   while(low<=high){ //当前查找区间R[low..high]非空   mid=low+((high-low)/2);//使用 (low + high) / 2 会有整数溢出的问题   if(R[mid].key==K)   {   return mid; //查找成功返回   }   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

int BinSearch2(int array[], int n, int v){    int left, right, middle;    left = -1, right = n;    while (left + 1 != right)    {        middle = left + (right - left) / 2;        if (array[middle] < v)        {            left = middle;        }        else        {            right = middle;        }    }    if (right >= n || array[right] != v)    {        right = -1;    }    return right;}

参考资料
1.<<编程珠玑>>
2.wiki上关于二分查找的说明:http://en.wikipedia.org/wiki/Binary_search

int BinSearch1(int r[ ], int n, int k)//数组r[1] ~ r[n]存放查找集合{     low=1; high=n;    while (low<=high)                       {       mid=(low+high)/2;                   if (k
r[mid]) low=mid+1; else return mid; } return 0;}

转载地址:https://linuxstyle.blog.csdn.net/article/details/1539685 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C#字符串处理类
下一篇:C#实现对象的Xml格式序列化及反序列化

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月25日 08时58分24秒