在数组中查找最长日期(非LINQ)

本文关键字:LINQ 日期 数组 查找 | 更新日期: 2023-09-27 18:21:21

假设我有一个日期数组

DateTime[] dt = new DateTime[10];
// populate array with dates

如何在不使用LINQ的情况下找到最长日期?

在数组中查找最长日期(非LINQ)

var maxDate = DateTime.MinValue;
foreach (var date in dt) {
    maxDate = date > maxDate ? date : maxDate;
}

你提到使用排序算法,大概是为了让你可以要求:

var maxDate = dt[dt.Length - 1];

数组排序后。问题是,你需要找到一种比O(n)性能更好的排序算法才能获得任何优势。Bubble Sort是O(n^2),所以使用它没有意义;平均而言,它的性能比只在列表中运行一次更差。

在下面的代码中,我将最大日期初始化为"空"值,然后在数组中循环并更新最大日期(如果我们还没有,或者我们有的日期在数组中的日期之前)。

DateTime? Max = null;
foreach(var d in dt)
{
    if(Max == null || Max.Value < d)
        Max = d;
}

上面处理了一个空数组和DateTime.MinValue 的实际日期

DateTime maxDate = DateTime.MinValue;
foreach (DateTime date in dt
{
    if (date > maxDate)
    {
        maxDate = date;
    }
}

这里有一个使用排序的解决方案(修改数组使其排序):

Array.Sort(dt);
DateTime maxValue = dt[dt.Length - 1];