为了账号安全,请及时绑定邮箱和手机立即绑定

这个查找应该用什么算法?

这个查找应该用什么算法?

慕哥9229398 2019-01-02 22:27:57
data = [     {type: 'point', ...},       {type: 'point', ...},     {type: 'point', ...},     {type: 'point', ...},     {type: 'point', ...},     {type: 'point', ...},     {type: 'line', ...},     {type: 'line', ...},     {type: 'line', ...},     {type: 'line', ...},     {type: 'area', ...},     {type: 'area', ...},     {type: 'area', ...},     {type: 'area', ...},     {type: 'area', ...} ]这个数据集合的特征是,各个数据按照各自的type聚集在一起。并且,type为point的集合一定会在line前面,同理,line的集合一定会在area前面。现在要插入一条新的数据,type为'area',插入到area集合的第一项里,除了顺序查找,有没有别的查找算法能快一点?谢谢
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

如果能提前确定type的顺序,用二分法查找应该是最快的
思路就是先取要查找的type在这个序列中的index

然后拿到目标数组最中间的那个对象,取中间那个对象type的index与查找index对比
大于就用数组后半部【小于用前半部】继续进行这个取中间对象匹配
一直二分匹配到找到与查找type一样index的中间对象,用这个对象index向前遍历找到初始位置返回。

数据量很大的情况下应该能增加不少效率,不多的话还是直接findIndex来得直接


查看完整回答
反对 回复 2019-01-02
  • 1 回答
  • 0 关注
  • 419 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信