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

时间:2011-02-07 09:17:06

标签: c# .net data-structures collections

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

存储按十进制键排序的值,允许使用dublicates

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

一个例子:

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

4 个答案:

答案 0 :(得分:5)

您正在寻找允许重复密钥的二叉树(又名multi-set)。 .NET库中没有这样的东西,但它们很容易实现(并且免费提供,例如herehere)。

另见Are there any implementations of multiset for .Net?

答案 1 :(得分:1)

我建议您使用SQLite进行此类查询。 您的查询将是:

from car in cars where car.Price < 1000 
order by car.Price descending
select car

答案 2 :(得分:1)

您只需使用List来存储汽车价格,并在每次添加新车价时对其进行排序。

List<int> PriceList= new List<int>();
PriceList.Sort();

答案 3 :(得分:1)

我知道您正在寻找现成的结构,但可能值得探索的一个选项是van Emde Boas Tree。此结构为您提供查找,查找后继,查找前任,并删除O(lg lg n)中的所有时间,这比平衡搜索树指数级快。我不熟悉C#中这种结构的任何实现,但它可能是解决问题的渐近最佳方式。如果你要存储大量的整数,它也可以节省空间。