二分查找法与拉格朗日差集
2016-04-21 21:26
288 查看
int * find2(int *a, int left, int right, int findnum) { register int center; while (left <= right) { //拉格朗日差集 center = left + (right - left) * 1.0 * (findnum - *(a + left)) / (*(a + right) - *(a + left)); if (center > right || center < left) { center = (left + right) / 2; } if (*(a + center) == findnum) { return a + center; } else if (*(a + center) < findnum) { left = center + 1; } else { right = center - 1; } } return NULL; }
要避免拉个朗日超出范围的问题。
相关文章推荐
- 随笔
- 线程同步与互斥(死锁的避免)
- Python框架之Tornado(四)源码之褪去模板外衣
- spring Ioc
- 二维数组或更高维数组的传递问题
- 华为oj 购物单
- C语言
- yii2 GridView 下拉搜索实现案例教程
- ASCII码对照表
- Ubuntu中取消秘钥环
- 将sublime添加到右键菜单
- Spell Checker
- 浏览器读取上传文件的大小 file api
- C++ Greedy Snake的OOP实现 贪食蛇 <list> STL初次学习
- 0040申请一个已知长度的string类型字符串
- jsf+primefaces问题汇总
- 24点问题的java实现
- 冲刺阶段的日记01
- Qt之图形(转换)
- poj 2478 Farey Sequence 欧拉函数递推打表