美文网首页
二分查找通过表中的日期信息找到表中的多条数据

二分查找通过表中的日期信息找到表中的多条数据

作者: 偷吃猫的狗粮 | 来源:发表于2018-11-21 08:33 被阅读0次

最近碰到一个查表的问题.需要通过表中的日期筛选出数据.数据可能是0到n.表中的日期是按照顺序排列的.使用二分查找遇到了只能查到指定项的问题的问题.下面是我的代码实现.

-- function UI_WeatherMain:Binary_Search(_CurDate)
--  if _CurDate ~= 0000 then 
--      local _CureDateNum = tonumber(_CurDate)
--      local _start = 1
--      local _end = #TB_WEATHER_CONFIG
--      while _start <= _end do 
--          local _mid = math.floor( (_start + _end) / 2)
--          if _CureDateNum > TB_WEATHER_CONFIG[_mid].Date then 
--          _start = _mid + 1 
--          elseif _CureDateNum < TB_WEATHER_CONFIG[_mid].Date then 
--              _end = _mid - 1 
--          else 
--              return  TB_WEATHER_CONFIG[_mid]
--          end
--      end
--      return nil
--  end
--  return nil
-- end

通过前辈的思路解决了问题.具体记录如下.

function UI_WeatherMain:BinarySearch(_CurDateNum, _Start, _End)
    local _Mid = math.floor( (_Start + _End) / 2)
    if _CurDateNum > TB_WEATHER_FORECAST[_Mid].Date then 
        self:BinarySearch(_CurDateNum, _Mid, _End)
    elseif _CurDateNum < TB_WEATHER_FORECAST[_Mid].Date then 
        self:BinarySearch(_CurDateNum, _Start, _Mid)
    else 
        if _CurDateNum == TB_WEATHER_FORECAST[_Start].Date then 
            self.Start = _Start 
        else
            _Start = _Start + 1
        end
        if _CurDateNum == TB_WEATHER_FORECAST[_End].Date then 
            self.End = _End 
        else
            _End = _End - 1
        end
        if self.Start ~= _Start or self.End ~= _End then 
            self:BinarySearch(_CurDateNum, _Start, _End)
        end
    end
end

这样可以找到数据的开始点和结束点.中间的数据就是我需要的.

相关文章

  • 二分查找通过表中的日期信息找到表中的多条数据

    最近碰到一个查表的问题.需要通过表中的日期筛选出数据.数据可能是0到n.表中的日期是按照顺序排列的.使用二分查找遇...

  • 查找

    静态查找表:只作查找操作的查找表 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经...

  • 2019-07-11

    索引扫描: 我们先通过index查找到数据对应的rowid值,然后根据rowid直接从表中得到具体的数据,这种查找...

  • (5)Go实现二分查找法

    二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找法要求表中数据是可比...

  • django02

    模型操作 ① 在models.py中建立数据库模型 在views.py中通过学生信息表查找学生信息

  • Hive元数据基础

    一、存储Hive版本的元数据表 version表存hive的版本信息,该表中数据只有一条,如果存在多条,会造成hi...

  • Lua实现继承的方法

    lua通过元表实现继承 lua查找一个表元素的规则如下 1.在表中查找,如果找到,则返回这个元素 2.判断该表是否...

  • 算法(一)查找算法 平衡二叉树,红黑树,B树等

    顺序查找 略 折半查找 折半查找,也称二分查找,在某些情况下,折半查找比顺序查找效率更高(要求静态查找表中数据必须...

  • MySQL索引详解(一)索引的分类

    在表中查找数据的时候,如果使用索引,则可以很快的查找到,如果不是用索引,就只能在表中的数据里一个一个比对。索引相关...

  • 六、查找

    六、查找 1. 静态查找表 静态查找表在查找过程中不改变表中数据——不插不删,故采用顺序存储结构。它适用于数据不变...

网友评论

      本文标题:二分查找通过表中的日期信息找到表中的多条数据

      本文链接:https://www.haomeiwen.com/subject/vkvyvftx.html