在数组中查找最长日期(非LINQ)
本文关键字:LINQ 日期 数组 查找 | 更新日期: 2023-09-27 18:21:21
假设我有一个日期数组
DateTime[] dt = new DateTime[10];
// populate array with dates
如何在不使用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];