假设我有一个日期数组
DateTime[] dt = new DateTime[10];
// populate array with dates
如何在不使用LINQ的情况下找到最长日期?
答案 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];