问题描述:已知一个userId对应一个(x,y)坐标
给定minX,maxX,minY,maxY,求出该范围内所有userId。
考虑到大量的userId的坐标实时在变化更新,要求插入和 检索给定范围内的所有userid的效率要高
坛子里的大牛看看吧,我实现的基本上效率太低了,请给出算法,万分感谢。
当我没说过索引的事情, 这么频繁的更新 那么少的读取 放索引就废了...
-------------------------------------
如果是更新比新增多很多的话, 主要考虑更新操作, 如果是userid分布比较紧密,能做数组存放的话那么更新效率是O(n)+c ,要么用一般的二分查找更新效率是O(n*logn)+c
每秒一次的那个查询,如果不允许脏读的话, 可以考虑用快照,复制一部分数据结构以后统计,这样避免长时间堵塞更新操作,另外不知道你的程序对于数据有效性和时效性有没有什么要求
请补充一下,存储到底是要求存储在内存还是数据库还是文件中?这个很重要?
另外你是怎么实现的,效率怎样?数据的规模有多大,即userid 的数量级是多少,你希望增删改查的效率达到多少?请明确这些问题,然后才好回答。
考虑一下无锁并发跳表
用二维树状数组吧
或者二维线段树