设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

二维数组中sort数组排列由小到大的元素如何排列

查看数: 2187 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-18 18:02

正文摘要:

本帖最后由 ppspssss 于 2022-2-18 20:27 编辑 二维数组中sort数组排列由小到大的元素如何排列 若 a = [["元素a',5] , ["元素b', 1] ,["元素c', 2],["元素d', 4],["元素e', 3]] 将其排列成 a = [ ["元素b', 1] , ...

回复

SailCat 发表于 2022-2-19 14:00:39
楼主怕是不知道ruby的array是comparable并定义了<=>运算?
当然默认是按照第一个元素排序
KB.Driver 发表于 2022-2-19 00:42:21
ruby这么OOP的语言不来点花式写法?



class MyClass
  include Comparable
  attr_accessor :str, :int
  def initialize(str, int)
    @str, @int = str, int
  end
  def <=>(obj)
    self.to_i <=> obj.to_i
  end
  def to_i
    self.int
  end
  def to_s
    "[#{str.inspect}, #{int}]"
  end
end

a = ('元素a'..'元素e').to_a.zip((1..5).to_a.shuffle!).map { |e| MyClass.new(*e) }
puts a
puts a.sort

RyanBern 发表于 2022-2-18 22:25:11
本帖最后由 RyanBern 于 2022-2-18 22:33 编辑

RUBY 代码复制
  1. a.sort_by{ |a| a[1] }

或者
RUBY 代码复制
  1. a.sort{ |a, b| a[1] <=> b[1] }
Im剑侠客 发表于 2022-2-18 21:17:49
一个思路:拆分前作标志,重新排序后按标志恢复。如果是主楼中的不重复数字,用几个for循环判断标志就可以了。
对于可重复数字有点难度,不知道sort的组成内容是什么,如果有sort的非集成结构,即原生的基础代码,应该也可能把标志安插进去处理。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 17:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表