Perl实现高水线算法

         这篇文章主要介绍了Perl实现高水线算法(解决多值比较问题方法),从本文代码示例中还可以学习到数组遍历、函数写法、函数调用等知识,需要的朋友可以参考下

 
 

        "高水线"算法:大水过后,最后一波浪消退时,高水线会标示出所见过的最高水位。
下面看下"高水线"算法在Perl中的运用。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#! /usr/bin/perl;
use utf8;
 
sub max {
my($max_so_far) = shift @_; #数组中第一个值,暂时当成最大值。
foreach(@_){ #遍历数组@_
if($_>$max_so_far){ #看其它元素是否有比$max_so_far大的值。
$max_so_far = $_;} #如果有话,更新最大值变量
}
$max_so_far;
}
 
my $_MaxData = &max(2,3,8,5,10);
print $_MaxData;

         第一行对数组@_进行shift操作,将一个元素2放到最大值$max_so_far变量中,@_中剩下的元素为(3,8,5,10),然后用foreach循环遍历数组,新数组中的第一个元素3比2大,又被移到$max_so_far变量中,依次类推,最后10,就是数组中的最大元素。

时间: 2024-08-03 19:57:45

Perl实现高水线算法的相关文章

Perl实现高水线算法(解决多值比较问题方法)_perl

"高水线"算法:大水过后,最后一波浪消退时,高水线会标示出所见过的最高水位. 下面看下"高水线"算法在Perl中的运用. #! /usr/bin/perl; use utf8; sub max { my($max_so_far) = shift @_; #数组中第一个值,暂时当成最大值. foreach(@_){ #遍历数组@_ if($_>$max_so_far){ #看其它元素是否有比$max_so_far大的值. $max_so_far = $_;} #

求个效率高的算法

问题描述 小弟有个表达式:比如 ${temp1} * 2 + ${temp2} 凡是以 ${  开头的和以 } 表示一个变量哈. 想求一个方法,找出任何一个表达的所有变量出来.. 解决方案 使用正则表达式匹配以 ${ 开头的和以 }结尾的,取其中{}中的部分就是了.如${(.*?)}.解决方案二:引用(?<=${).*?(?=})可以直接取到temp1,temp2

算法系列(十一) 圆生成算法

在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐 标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 + y2 = R2.在计算 机图形学中,圆和直线一样,也存在在点阵输出设备上显示或输出的问题,因此也需要一套光栅扫描 转换算法.为了简化,我们先考虑圆心在原点的圆的生成,对于中心不是原点的圆,可以通过坐标的 平移变换获得相应位置的圆. 在进行扫描转换之前,需要了解一个圆的特性,就是圆的八分对 成

Oracle高水位的知识

一.准备知识:ORACLE的逻辑存储管理. ORACLE在逻辑存储上分4个粒度: 表空间, 段, 区 和 块. (1)块: 是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行.  每一个Block里可以包含多个row. (2)区: 由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个例子来说,当我们创建一个表Dave时,首先ORACLE会分配一区的空间给这个表,随着不断的

php的hash算法介绍

 PHP的Hash采用的是目前最为普遍的DJBX33A (Daniel J. Bernstein, Times 33 with Addition), 这个算法被广泛运用与多个软件项目,Apache, Perl和Berkeley DB等.对于字符串而言这是目前所知道的最好的哈希算法,原因在于该算法的速度非常快,而且分类非常好(冲突小,分布均匀) Hash Table是PHP的核心,这话一点都不过分.   PHP的数组,关联数组,对象属性,函数表,符号表,等等都是用HashTable来做为容器的.

大话数据结构之二:算法

1.数据结构和算法的关系 个人感觉程序=算法+数据结构.数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的.往往是在发展一种算法的时候,构建了适合于这种算法的数据结构.当然数据结构和算法也有区别:数据结构关注的是数据的逻辑结构.存储结构以及基本操作,而算法更多的是关注如何在数据结构的基础上解决实际问题.算法是编程的思想,数据结构则是这些思想的逻辑基础. 2.算法定义 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 现实世界中的问题千

《算法帝国》:被算法和算法交易改变的未来

当我们用崭新的视角去观察与思考,世界就会变成另外的模样.这是我们筹备举办"改变未来的算法与算法交易"研讨会的初衷. 美国雄霸全球依赖华尔街与硅谷等强大支柱,而近年来,算法对华尔街的渗透与控制体现出颠覆未来产业生态的力量.图灵公司出版的<算法帝国>一书中介绍,2000年,华尔街通过计算机程序交易的比率不足美国股市交易量的10%:2008年上半年,自动化电子交易占了全美股市交易量的60%:现在,华尔街70%以上的交易依靠所谓的黑盒子或者算法交易(闪电交易)运行.银行家和股票经纪

【算法导论】邻接表存储的拓扑排序

        上一篇文章中讲述了用邻接矩阵存储的图的拓扑排序,下面本文介绍用邻接表存储的图的拓扑排序.         关于拓扑排序的概念及基本思想,我在上一篇文章中已经较为详细的描述了,这里不在介绍.我们知道利用邻接矩阵进行拓扑排序时,程序实现较为简单,但是效率不高,算法的复杂度为O(n^3).而利用邻接表会使入度为0的顶点的操作简化,从而提高算法的效率. 在邻接表存储结构中,为了便于检查每个顶点的入度,可在顶点表中增加一个入度域(id),这样的邻接表如下图所示,这样只需对由n个元素构成的顶

【编程练习】八大排序算法

  概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序.     当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序.堆排序或归并排序序.    快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短: 1.插入排序-直接插入排序(Straight Insertion Sort) 基本思想: