【发布时间】:2012-04-14 01:23:05
【问题描述】:
我正在研究如何使用加权值有效地对列表进行排序。
每个项目都有一个 ID、名称和文件路径。每个项目还有一个值列表,这些值分配了一个百分比,显示它们与每个值的相关程度。
我需要对列表进行排序,以便列表顶端的项目是与当前参数最相关的项目。
让我们说,
项目一:
- A:50,B:30,C:20,D:10
- X:50,Z:20
项目二:
- A:100, B:0, C:0, D:0
- X:0, Z:100
我的参数是 A 和 Z。显然,项目二应该在我的列表顶部,因为它是最相关的项目。但是我将如何实施呢?
奖励:如果能够进行轻微的随机化也很好,我不希望每次都获得最终的相关项目。
谢谢
【问题讨论】:
-
请提供更多信息。你试过什么?为了排序,您将如何计算每个项目的价值?你会添加参数吗?将它们相乘?您是否将这些项目存储在
List<T>中?List<T>有一个方法Sort接受委托。你试过用那个吗? -
您想要随机排序?这有什么意义?
-
嗯,我希望它排序,所以我得到更多相关的项目。但我不希望每次都是最相关的,所以需要有一点随机性。我以前使用过 List
.Sort 方法,但我不确定这是否是解决此类问题的最佳做法。 -
听起来您正在寻找优先队列。 C# 没有内置的,但是如果您搜索该术语,您会发现很多人提供他们自己的实现,因为这是一个常见的实际和学术问题。