编程珠玑读书笔记之------>一个正确的二分搜索代码
2013-06-23 20:38
155 查看
首先确保待查找的元素是处于已排序状态,先给出一个错误的版本,下面这个程序将会陷入死循环:
我相信聪明的你已经看出上述代码存在的问题了,让我们通过测试实例来验证吧:
input: 5 20 output: 2
5 30
3
5 40 ......问题出现在了这里;
好了,我们来看一个正确的版本吧:
#include <iostream> using namespace std; const int MAXN=100; int x[MAXN],n,t; //n是数组的长度,t是待查找的元素 int binarysearch(int t) { int l,u,m; l=0,u=n-1; while(l<=u) { m=(l+u)/2; if(x[m]<t)l=m; else if(x[m]>t)u=m; else return m; } return -1; } int main() { while(cin>>n>>t) { for(int i=0;i<n;i++)x[i]=10*i; cout<<binarysearch(t)<<endl; } return 0; }
我相信聪明的你已经看出上述代码存在的问题了,让我们通过测试实例来验证吧:
input: 5 20 output: 2
5 30
3
5 40 ......问题出现在了这里;
好了,我们来看一个正确的版本吧:
#include <iostream> using namespace std; const int MAXN=100; int x[MAXN],n,t; //n是数组的长度,t是待查找的元素 int binarysearch(int t) { int l,u,m; l=0,u=n-1; while(l<=u) { m=(l+u)/2; if(x[m]<t)l=m+1; else if(x[m]>t)u=m-1; else return m; } return -1; } int main() { while(cin>>n>>t) { for(int i=0;i<n;i++)x[i]=10*i; cout<<binarysearch(t)<<endl; } return 0; }
相关文章推荐
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- <代码收藏>二分查找
- javascript-学习笔记-<script> </script> 代码执行的和上一个博客相对应的
- 一笔画游戏路径搜索代码<未优化>
- 怎样写出一个正确的二分搜索
- 有没有代码可以判断一个List<View>集合里的view是什么view
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- <ul>中的<li>我点击一个<li>后其它的<li>全变背景色,求JS和CSS代码 <ul>中的<li>我点击一个<li>后其它的<li>全变背景色 要图中效果,求JS和CSS代码 (搜搜问问)
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 有没有代码可以判断一个List<View>集合里的view是什么view
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 正确的二分搜索代码
- # include <errno.h >查看错误代码errno是调试程序的一个重要方法。当Linux C API函数发生异常时,一般会将errno变量赋值一个整数,不同的值表示不同的含义,可以通过查看
- YUV422 --> RGB 代码
- 【每天一个Linux命令】17. 强大的文件搜索工具grep&&正则表达式
- 哥发明的 一个ssh整合时解决dao层代码冗余问题的"一点儿不漏"型抽取法!!!!
- 手游中android平台在java代码里--->游戏子线程和java主线程的交替运行
- JDK的动态实现代码-->Proxy.newProxyInstance()
- 【量化小讲堂-Python&Pandas系列10】如何判断一个策略的好坏?(附代码)