繁体   English   中英

推荐排序的集合以左右搜索最接近的值

[英]Recommend sorted collection to search closest value left and right

.NET 3.5中是否有现成的数据结构可以执行以下操作

存储按十进制键排序的值,允许重复

获取最接近给定键左右的下一个值(枚举数)

一个例子:

汽车经销商有汽车,客户要求找到最昂贵的汽车,但价格低于1000美元

您正在寻找允许重复键(也称为多集 )的二叉树。 .NET库中没有这样的东西,但是它们很容易实现(并且可以免费使用,例如herehere )。

另请参见.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM