二分查找算法-精简 稳定
来源:互联网 发布:内田真礼 知乎 编辑:程序博客网 时间:2024/06/05 11:15
//*************************************// 函数名称:FineTab 二分查找算法 ->查温度表// 函数功能:查找数据在表中对应的位置 表中数据从大到小// 入口参数:表地址、表长度、要查找的数据// 出口参数:无// 返 回 值:数据在表中的位置//***************************************/int FineTab(int *a,int TabLong,int data)//查表数据为从大到小排序{int st,ed,m ;int i ;st = 0 ;//初始化要查询的数为第一个ed = TabLong-1 ;//最后一个数i = 0 ;if(data >= a[st]) return st ;else if(data < a[ed]) return ed ;while(st < ed){m = (st+ed)>>1 ;//二分取要查询的中间值if(data == a[m] ) break ;if(data < a[m] && data > a[m+1]) break ;if(data > a[m])ed = m ;else st = m ;if(++i > TabLong) break ;}if(st > ed ) return 0 ;return m ;}//*************************************// 函数名称:FineTab 二分查找算法 ->查温度表// 函数功能:查找数据在表中对应的位置 表中数据从小到大排序// 入口参数:表地址、表长度、要查找的数据// 出口参数:无// 返 回 值:数据在表中的位置//***************************************/int Fine1Tab(int *a,int TabLong,int data){int st,ed,m ;int i ;st = 0 ;//初始化要查询的数为第一个ed = TabLong-1 ;//最后一个数i = 0 ;if(data <= a[st]) return st ;//小于等于第一个数 ,查询值为0,即为第一个数else if(data >= a[ed]) return ed ;//大于等于最后一个数,查询之为最后一个数while(st < ed)//循环查询{ m = (st+ed)>>1 ;//二分取要查询的中间值if(data == a[m] ) break ;//刚好是要查询的值,结束查询if(data > a[m-1] && data < a[m]) break ;//data介于中间值和中间值的上个值之间,结束查询if(data < a[m])ed = m ;//data小于当前中间值,更新最后的范围值else st = m ;//data大于当前中间值,更新开始的范围值if(++i > TabLong) //防止溢出break ;}if(st > ed ) return 0 ;return m ;}
34 1
- 二分查找算法-精简 稳定
- 查找算法 二分查找
- 查找算法:二分查找
- 算法--查找--二分查找
- 查找算法---二分查找
- [算法]二分查找算法
- 算法----二分查找算法
- 查找算法:二分查找算法
- [转载]查找算法----二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法_二分查找
- 算法 二分查找(折半查找)
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- 查找算法之二分查找
- Birt 报表之脚本操作数据
- 模板模式
- iOS学习-Block使用
- java I/O中的文件字节输出流和字符输出流
- ant调用 shell脚本
- 二分查找算法-精简 稳定
- Android Debuggerd的分析及使用方法 【转】
- 重置推送设置提醒
- Android.mk简介
- pythonchallenge level4--python2.7
- 母函数入门
- Lua的协同程序
- linux下串口通讯参数设置
- oracle相关操作