[英]Recommend sorted collection to search closest value left and right
.NET 3.5中是否有现成的数据结构可以执行以下操作
存储按十进制键排序的值,允许重复
获取最接近给定键左右的下一个值(枚举数)
一个例子:
汽车经销商有汽车,客户要求找到最昂贵的汽车,但价格低于1000美元
您正在寻找允许重复键(也称为多集 )的二叉树。 .NET库中没有这样的东西,但是它们很容易实现(并且可以免费使用,例如here或here )。
另请参见.net是否有多集实现?
我建议您将SQLite用于此类查询。 您的查询将是:
from car in cars where car.Price < 1000
order by car.Price descending
select car
您只需使用列表来存储汽车价格,并在每次添加新汽车价格时对其进行排序。
List<int> PriceList= new List<int>();
PriceList.Sort();
我知道您正在寻找现成的结构,但是van Emde Boas Tree可能是一个值得探索的选择。 这种结构使您可以在O(lg lg n)中查找,查找后继,查找前任以及删除所有内容,这比平衡搜索树快得多。 我对C#中此结构的任何实现都不熟悉,但这可能是解决问题的渐近最优方法。 如果要存储大量整数,那么它也可以节省空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.