是否可以使用合并排序(C#)根据多个条件对数组进行排序?

迈克·巴托夫斯基(Mike Batowski)

可以说我在控制台应用程序中获得以下输入行:

A 10 20 30
B 5 10 40
C 40 10 20
D 30 25 10

字母代表产品名称,第二价格价格,第三产品得分和第四产品耐久性。我想首先根据价格对这个列表进行排序。如果两种产品的价格相同,则根据产品得分排序。如果两种产品的价格和产品分数相同,则我要按产品的耐用性排序,最后按名称排序。使用合并排序是否可能?如果是这样,我应该如何解决这个问题?我无法将所有这些值存储到一个数组中并将其传递给合并排序算法,因此我必须创建多个数组。但是,如何跟踪数组的哪些值属于一起?我想在C#中做到这一点。

皮特

您可以简单地在元素列表中使用OrderByThenBy下面的例子:

void Main()
{
    var products = new List<Product>();
    products.Add(new Product() { Name = "A", Price = 10, Score = 20, Endurance = 30 });
    products.Add(new Product() { Name = "B", Price = 5, Score = 10, Endurance = 40 });
    products.Add(new Product() { Name = "C", Price = 40, Score = 10, Endurance = 20 });
    products.Add(new Product() { Name = "D", Price = 30, Score = 25, Endurance = 10 });

    var resultsSorted = products
                        .OrderBy(p => p.Price)
                        .ThenBy(p => p.Score)
                        .ThenBy(p => p.Endurance)
                        .ThenBy(p => p.Name);
}

class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Score { get; set; }
    public int Endurance { get; set; }
}

[更新]

您确实问过如何正确打印那些产品,因为Console.WriteLine(product)没有打印产品的“详细信息”。当然,这是因为您最终.ToString()在对象上实现了方法的默认实现您必须在foreach循环中自行创建此字符串-或覆盖.ToString()方法,因此它是:

   foreach(var product in resultsSorted)
   {
      Console.WriteLine($"Name:{Name}, Price:{Price}, Score:{Score}, Endurance:{Endurance}");
   }

或覆盖 .ToString


class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Score { get; set; }
    public int Endurance { get; set; }
    public override string ToString()
    {
        return $"Name:{Name}, Price:{Price}, Score:{Score}, Endurance:{Endurance}";
    }
}

然后您可以使用:

foreach (var product in resultsSorted)
{
   Console.WriteLine(product);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用合并排序对数组进行排序

Ruby根据多个条件对数字数组进行排序

根据多个条件对数组中的项目进行排序

对快速排序和合并排序进行基准测试,可以使合并排序更快

是否可以使用.reduce()、. map()、. filter()方法对数组进行排序?

使用javascript sort函数根据条件对数组进行排序

使用归并排序对数组进行排序得到 stackoverflow

在PHP中使用多个条件对数组进行排序

使用合并排序对结构数组进行排序

c#使用IComparable接口对数组进行排序

根据多个列和条件对数据框进行排序

根据多个条件对数组的项目重新排序

使用JS Underscore对相似数组进行key合并排序

如何基于多个条件对数组进行排序?

Javascript-按多个条件对数组进行排序

打字稿:如何按多个条件对数组进行排序

根据数组对象对数组进行排序

使用多个数组对数组进行排序

使用选择排序对数组进行排序

根据比较函数对数组进行排序 C++

无法使用 PHP 根据键值对数组进行排序

如何使用多个条件对数组进行排序,包括枚举、名称和数字的值?

如何使用 MergeSort 按两个或多个条件对数组进行排序?

使用C中的合并排序或快速排序对很长的链接列表进行排序

根据总和对数组列进行排序

根据元素的频率对数组进行排序

如何根据参数对数组进行排序

PHP根据值对数组进行排序

根据均值对数组进行排序

TOP 榜单

热门标签

归档