查找数组中的最大日期(非LINQ)

时间:2012-01-24 16:19:57

标签: c#

假设我有一个日期数组

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

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

4 个答案:

答案 0 :(得分:5)

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

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

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

对数组进行排序后。问题是,您需要找到一种比 O(n) 更好的排序算法,以获得任何优势。冒泡排序是 O(n^2) 所以没有必要使用它;平均而言,它比仅仅运行一次列表表现更差。

答案 1 :(得分:0)

在下面的代码中,我将最大日期初始化为'空'值,然后我循环遍历数组并更新最大日期,如果我们还没有,或者我们所拥有的日期早于数组。

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

以上内容涉及空数组和实际日期DateTime.MinValue

答案 2 :(得分:0)

DateTime maxDate = DateTime.MinValue;

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

答案 3 :(得分:0)

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

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