打印

【转】二分查找

[复制链接]
521|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风萧寒|  楼主 | 2016-12-22 12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
二分查找算法要求:1、必须采用顺序存储结构 2、必须按关键字大小有序排列

时间复杂度:
假设数组长度为n, 该算法时间复杂度为O(log(n))

代码区:
[cpp] view plain copy
print?


  • int binSearch(int Seq[],int len,int des)  
  • {  
  •     int high=len-1;  
  •     int low=0,mid;  
  •     while(low<=high)  
  •     {  
  •         mid=low+(high-low)/2;  
  •         if(Seq[mid]==des)  
  •             return mid;  
  •         else if(Seq[mid]>des)  
  •             high=mid-1;  
  •         else low=mid+1;  
  •     }  
  •     return -1;  
  • }  


举个栗子:
[cpp] view plain copy
print?


  • #include <stdio.h>  
  • #include <string.h>  
  • #define LEN 5  
  • int binSearch(int Seq[],int len,int des)  
  • {  
  •     int high=len-1;  
  •     int low=0,mid;  
  •     while(low<=high)  
  •     {  
  •         mid=low+(high-low)/2;  
  •         if(Seq[mid]==des)  
  •             return mid;  
  •         else if(Seq[mid]>des)  
  •             high=mid-1;  
  •         else low=mid+1;  
  •     }  
  •     return -1;  
  • }  
  • int main()  
  • {  
  •     int list[LEN];  
  •     int des,i;  
  •     printf("请输入要查找的数组:\n");  
  •     for(i=0;i<LEN;i++)  
  •         scanf("%d",&list);  
  •     printf("请输入要查找的值:\n");  
  •     scanf("%d",&des);  
  •     printf("%d\n",binSearch(list,LEN,des));  
  •     return 0;  
  • }  


相关帖子

沙发
baimiaocun2015| | 2016-12-22 23:15 | 只看该作者
二分法是极大提高了数据的处理效率的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

134

帖子

3

粉丝