0

给定一个包含以下内容的文件:

2011-03-01
2011-04-01
2011-01-01
2011-05-01
2011-02-01

我想得到:

2011-01-01

如果我们根据字典顺序比较行,这是文件中最小的行。

实现此目的的一种方法是先对行进行排序,然后返回第一行:

sort file | head -n 1

然而,这具有 O( n log n ) 的复杂性,因为sortmin 操作应该只在 O( n ) 中可行,其中n是行数。

任何人都知道执行此操作的更智能和/或更有效的方法吗?

4

1 回答 1

2

您可以尝试awk 'NR==1 || $0 < min {min=$0} END {print min}' file,计时,看看它是否比sort|head

于 2018-06-05T19:08:35.810 回答