二分查找
2016-07-27 19:00
190 查看
找第一个大于的数
找相等的
function shuilu:FindInster(obj, compfunc) --找到左边第一个比自己大的 local res = #self.sorttab + 1 --找不到就尾部插入 local left = 1 local right = #self.sorttab while left <= right do local mid = left + ((right - left ) >> 1) if compfunc(self.sorttab[mid], obj) then left = mid + 1 else res = mid right = mid - 1 end end return res end
找相等的
function shuilu:FindIndex(obj, compfunc) local left = 1 local right = #self.sorttab local mid = (left + right) // 2 while left ~= mid do if self.sorttab[mid].teamkey == obj.teamkey then break elseif compfunc(self.sorttab[mid], obj) then left = mid + 1 else right = mid -1 end mid = left + ((right + left ) >> 1) end if self.sorttab[mid].key ~= key then return end return mid, self.sorttab[mid] end
--二分查找 function binfind(t, rand) assert(#t > 0) local left = 1 local right = #t while left <= right do local mid = left + ((right - left ) >> 1) if mid == 1 and t[mid].rate >= rand then return t[mid] end if t[mid].rate < rand and t[mid +1].rate >= rand then return t[mid +1] elseif t[mid].rate >= rand then right = mid - 1 else left = mid + 1 end end end
相关文章推荐
- HDU - 1026 - Ignatius and the Princess I(bfs)
- Multiplication Table 【二分】
- 面试中关于Java你所需知道的的一切
- construction of tuples containing 0 or 1 items
- MyBatis源码分析(4)—— Cache构建以及应用
- python 的三元表达式
- 简单的UIScrollView循环滑动
- Mysql学习总结(12)——21分钟Mysql入门教程
- Java匿名内部类
- python 迭代 及列表生成式
- Andorid之华为手机开发模式不打印日志
- Codeforces Round #298 (Div. 2) C. Polycarpus' Dice(思路)
- 杭电-4004 The Frog's Games(二分)
- 小问题总结
- Mysql学习总结(11)——MySql存储过程与函数
- Linux基础(2)--history命令
- java_接口的应用
- xib/StoryBoard中设置与Bottom Layout Guide相关的约束,push进来的闪一下
- uva10269
- Mysql学习总结(10)——MySql触发器使用讲解