• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > Ruby的字符串与数组求最大值的相关问题讨论

Ruby的字符串与数组求最大值的相关问题讨论

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了mysql 字符串最大值,字符串最大值,一维数组求最大值,数组求最大值,java数组求最大值等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

max方法

b=[1,3,55,777,2,4,6,8,0]
</div>

对于数值型的数据,max会得到数组的最大值,min得到数组的最小值

b.max => 777
b.min => 0
</div>

而对于字符串型数组比较大小没有实际意义,
ruby中给出的例子是

# enum.max         -> obj
# enum.max { |a, b| block } -> obj
#a = %w(albatross dog horse)
#a.max          => "horse"
# a.max { |a, b| a.length <=> b.length } #=> "albatross"
</div>

实际中的实验

d=%w(albatross dog horse ddd dasgfds)
d.max => "horse"
</div>

有点怪,怎么回事
为此打印了一下比较直观的数字字符串

a = ["1", "3", "55", "777", "2", "4", "6", "8", "0"]
def max(first,*rest) 
 max=first 
 rest.each do |x|
  p "---#{x}---#{max}"
  max=x if x>max 
  p "---#{x}---#{max}"
  max 
end
</div>

运行
结果为

"---3---1"
"---3---3"
"---55---3"
"---55---55"
"---777---55"
"---777---777"
"---2---777"
"---2---777"
"---4---777"
"---4---777"
"---6---777"
"---6---777"
"---8---777"
"---8---8"
"---0---8"
"---0---8"
 => "8"
</div>

问题出来了,"8" > "777" => true,再测试

"7" > "777" => false
"6" > "777" => false
"9" > "777" => true
"10" > "777" => false
"11" > "777" => false
"70" > "777" => false
"80" > "777" => true
</div>

该崩溃了,规律好不友好,因为用的max这个比较大小的方法,之前认为他是通过ASCII编码判断大小的,今天看有关sort排序的问题时发现这个问题,此处其实是通过字典排序的方法取的最大值。

下面就顺便来看一下Ruby中的sort:

sort排序方法

ary.sort          -> new_ary
ary.sort { |a, b| block } -> new_ary
enum.sort_by { |obj| block }  -> array
enum.sort_by          -> an_enumerator
</div>

实例

h=['1','3','13','10','7']
 A. p h.sort
 B. p h.sort{|a,b| a.to_i <=> b.to_i}
 C. p h.sort_by{|x| x.to_i}

</div>

输出如下:

A. ["1", "10", "13", "3", "7"] 
B. ["1", "3", "7", "10", "13"] 
C. ["1", "3", "7", "10", "13"]

</div>

1.在没有指定块的时候,sort默认的排序是按着字典的顺序排序的。
2.如果指定了块,将数值进行排序是块制定方法的数值的大小排序的。
3.sort_by方法用执行块的代码所生成的结果来排序,对每个元素只执行一次块的调用,比B的效率快。

</div>

您可能想查找下面的文章:

  • Ruby的字符串与数组求最大值的相关问题讨论

相关文章

  • Ruby on rails安装后去掉DL is deprecated,please use Fiddle警告信息的方法【测试可用】
  • Ruby面向对象编程中类的方法与类的扩展
  • Ruby中的p和puts的使用区别浅析
  • ruby的程序结构介绍
  • rails 连接mysql的问题解决
  • Ruby的25个编程细节(技巧、实用代码段)
  • 详解Ruby中的单件方法和单件类
  • ruby 学习笔记(2) 类的基本使用
  • ruby 对象的初始化 方法
  • CentOS 6.3下编译安装Ruby 2.0笔记

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby中XML格式数据处理库REXML的使用方法指南
    • Ruby中处理时间的一些基本操作
    • 浅析Ruby中的正则表达式的使用
    • 几个加速Ruby on Rails的编程技巧
    • Ruby遍历文件夹同时计算文件的md5sum
    • 详解Ruby中的代码块对象Proc
    • Ubuntu系统安装Ruby语言的三种方法
    • 升级到mac 10.10之后使用pod出现问题的解决方法
    • Ruby中使用mechanize批量下载校内网相册照片
    • Ruby 中关于日文转UTF-8及半角全角转换的技巧

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有