【问题标题】:Using Merge Sort to sort an array of objects by one of its properties?使用合并排序按其属性之一对对象数组进行排序?
【发布时间】:2015-06-08 08:47:42
【问题描述】:

以防标题不清楚。我希望能够根据对象的一个​​属性对对象数组进行排序(比如将项目的价格从最低到最高排序)。

我设法做的是:

double[] newArray = new double[Obj.Length];
while loop{
newArray[ctr] = Obj[ctr].price
}

这意味着 newArray 具有对象数组的 PRICE 属性。我可以对此进行排序。

但是,我不明白我如何能够适应合并排序算法(请注意,我必须在这里使用合并排序,而不是一些内置的 Array.Sort 函数)。这是因为归并排序是递归的,所以使用对象数组作为参数,在我看来并不可行。

我确实希望这是有道理的,如果需要任何澄清,我会编辑。

【问题讨论】:

  • 我认为 Uni Homework 更准确地描述了归并排序要求。

标签: c# arrays sorting object merge


【解决方案1】:

两种可能的选择是:

  1. 如果给定属性名称作为字符串,然后假设要比较的属性是实现IComparable 接口的类型,那么您使用反射从要比较的对象中提取属性值.

  2. 或者,您可以让合并排序接受比较逻辑的委托(例如int Compare(obj x, obj y)Func<T, T, TRes>)并使用此委托来比较对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2012-02-20
    • 2010-11-02
    • 1970-01-01
    相关资源
    最近更新 更多