案例;有5个数3 5 10 4 6 求出一个最大值;
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/usr/bin/perl $maximum=&max( 3 , 5 , 10 , 4 , 6 );
sub max { my ($max_so_far) = shift @_;
foreach (@_) {
if ($_ > $max_so_far) {
$max_so_far = $_;
}
}
$max_so_far;
} print "$maximum\n" ;
|
执行后
1
2
|
[root@centos lansgg]# ./d.pl 10 |
上面的程序代码使用了一般称为“高水线(high-watermark)”的算法;大水过后,在最后一浪消退时,高水线会标示出所见过的最高水位。本例中,$max_so_far记录了高水线,所以最后$max_so_far变量中的值就是我们要找的最大值。
本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1279184