11

我有一个包含一长串整数的文件:

10
4
66
....

我想使用 UNIX 命令行工具找到最大值。我知道我可以使用sort(并且确实有解决这个问题的解决方案sort),但这是低效的,需要 O(N*log(N)) 和大量内存。通过一个简单的 for 循环,我应该能够找到 O(N) 中的最大值和几个字节的内存。

似乎肯定有一些程序(名称如max)可以开箱即用地执行此操作——这是真的吗?

4

4 回答 4

27

如果不需要负数,您可以使用它:

awk '$0>x{x=$0};END{print x}' input.txt

使用它来支持负数:

awk 'BEGIN{x=-2147483648};$0>x{x=$0};END{print x}' input.txt

初始化x允许解决方案正确处理值 <= 0 的整数列表。有关更多详细信息,请参阅注释。

于 2012-08-13T09:43:55.813 回答
1
 max=1

 while read i
 do
  if [[ "$i" > "$max" ]]; then
     max="$i"
  fi
 done < a.txt

 echo "$max" > b.txt

a.txt 是输入文件(每行都有一个整数)。b.txt 包含 a.txt 中整数的最大值。

于 2012-08-13T09:44:24.663 回答
1
awk '{if($1>a)a=$1;}END{print a}' temp3
于 2012-08-13T10:03:36.473 回答
-1

排序-nr 输入文件.txt | head -1 其中 inputfile.txt 包含所有数字。

于 2014-08-22T12:26:31.423 回答