根据另一个数组的元素对一个数组进行排序

2023-12-29

我有一个 id 数组

a1 = [1, 2, 3, 4, 5]  

我还有另一个 id 为随机顺序的对象数组

a2 = [(obj_with_id_5), (obj_with_id_2), (obj_with_id_1), (obj_with_id_3), (obj_with_id_4)]  

现在我需要根据a1中id的顺序对a2进行排序。所以 a2 现在应该变成:

[(obj_with_id_1), (id_2), (id_3), (id_4), (id_5)]  

a1 可能是 [3, 2, 5, 4, 1] 或任何顺序,但 a2 应对应于 a1 中 ids 的顺序。

我确实喜欢这样:

a1.each_with_index do |id, idx|
  found_idx = a1.find_index { |c| c.id == id }
  replace_elem = a2[found_idx]
  a2[found_idx] = a2[idx]
  a2[idx] = replace_elem
end  

但如果 a2 的元素顺序与 a1 完全相反,这仍然可能会遇到 O(n^2) 时间。有人可以告诉我排序 a2 最有效的方法吗?


如果有什么比明显的方式快得多,我会感到惊讶:

a2.sort_by{|x| a1.index x.id}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据另一个数组的元素对一个数组进行排序 的相关文章

  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 对 Java 中 *any* 类的所有实例进行全排序

    我不确定以下代码是否能确保 Comparator 的 Javadoc 中给出的所有条件 class TotalOrder
  • 按日期合并多个日志文件,包括多行

    我有几个包含所有以时间戳开头的行的日志 因此以下内容可以按预期合并它们 cat myLog1 txt myLog2 txt sort n gt combined txt 问题是 myLog2 txt 还可以包含没有时间戳的行 例如 java
  • 将数组转换为具有默认值的对象的更简洁方法? (洛达什可用)

    我有一个数组 比如说 a b c 我想将其转换为一个对象 该对象以数组值作为键和我可以设置的默认值 所以如果默认值是true 我希望我的输出是 a true b true c true 下面的代码是否有更简洁的版本来实现此目的 var my
  • 添加边后更新最大流量

    考虑我们有一个网络流量 并使用 Edmond Karp 算法 我们已经拥有网络上的最大流量 现在 如果我们向网络添加任意边 具有一定容量 更新最大流量的最佳方法是什么 我正在考虑更新关于新边缘的残差网络 并再次寻找增强路径 直到找到新的最大
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • 正常关闭 sidekiq 进程

    有谁知道如何找到 sidekiq 的 pidfile 来优雅地关闭它 跑步ps ax grep sidekiq然后运行sidekiqctl stop
  • 由于 MIME 类型不受支持,拒绝应用样式

    我不断收到一条错误消息 指出 MIME 类型 text html 不可执行或不是受支持的样式表 MIME 类型 并且启用了严格的 MIME 检查 我的链接代码是
  • 如何从数组中提取特定元素?

    如果我有一个数组a 1 2 3 4 5 6 7 8 9 10 我想要这个数组的一个子集 第 1 个 第 5 个和第 7 个元素 是否可以通过简单的方式从该数组中提取这些内容 我在想这样的事情 a 0 4 6 1 5 7 但这行不通 还有一种
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • rake db:migrate db:reset 和 db:schema:load 之间的区别

    和 之间的不同rake db migrate and rake db reset我很清楚 我不明白的是如何rake db schema load与前两者不同 只是为了确保我在同一页面上 rake db migrate 运行尚未运行的迁移 r
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • 对包含元组的元组进行排序[重复]

    这个问题在这里已经有答案了 我有以下元组 其中包含元组 MY TUPLE A Apple C Carrot B Banana 我想根据以下内容对这个元组进行排序second内部元组中包含的值 即 对 Apple Carrot Banana
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 使用 Mountain Lion、Xcode 4.5 和 RVM 安装 Ruby?

    rvm install 1 9 3 with gcc clang 根据建议无法使用 RVM 在 Lion 下安装 Ruby GCC 问题 https stackoverflow com questions 8032824 cant inst
  • 查找 Rails 应用程序中未使用的代码

    如何查找正在运行和未运行的代码生产中 该应用程序经过充分测试 但还有很多测试unused代码 因此 他们在运行测试时得到覆盖 我想重构并清理这个烂摊子 它一直在浪费我的时间 我有很多后台工作 这就是为什么我希望生产环境来指导我 在 Hero
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 框架还是不框架?

    昨天我去上英语课 遇到了新朋友 他跟我说了他所做的工作 现在我还在学校学习 在他的公司里 客户有 许多人要求他们的项目 如果你 使用框架但不了解全部 组件或类似的东西 你会遇到 你的源代码和你的问题 没有修复它 因为它是由 另一个 客户付了
  • Android 中显示宽度和高度错误

    我的屏幕尺寸为 600 宽 x 1024 高 我得到当前宽度 600 但错误地得到高度 976 没有旋转屏幕 我得到当前宽度 1024 但错误得到高度 552 旋转屏幕 int rowPixelWidth WindowManager get
  • 比较两个浮点数,看看它们是都是负数还是都是正数

    大家好 我有 2 个浮点数 它们都来自输入框 我需要比较这两个浮点数 如果一个为负 一个为正 则会引发错误 如果它们都是积极的 或者都是消极的 那很好 有任何想法吗 Thanks 将它们相乘 如果答案是肯定的 那么它们都是相同的符号 如果答
  • 在构造函数之后用零初始化向量的有效方法[重复]

    这个问题在这里已经有答案了 初始化向量最有效的方法是什么 我不想在构造函数中初始化它 struct st std vector
  • 在 Android 上使用 AudioRecord 录制可以加快音频速度吗?

    我正在使用 AudioRecord 录制原始音频以进行处理 音频记录完全没有任何噪音 但是当播放生成的原始 PCM 数据时 它的播放速度就好像被加快了很多 最多大约两倍 我正在 Audacity 中查看和播放 PCM 数据 我正在使用实际手
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):错误:找不到模块“./src/data”

    当我尝试运行我的应用程序时 我收到此错误 我使用的是我一直使用的所有相同的依赖项 所以我对此感到非常困惑 我已经尝试删除我的 package lock json 和节点模块几次 并尝试在整个存储库中搜索 src data 但什么也没找到 更
  • 如何让 QWidget 始终位于最前面?

    我的 QMainWindow 上有两个按钮 一个用于 btnShowKb 另一个用于 btnHideKb 当我按 btnShowKb 时 它会显示一个 QWidget 我希望这个 QWidget 始终位于所有窗口的顶部 直到我按 btnHi
  • 存储数据的最佳(免费)方式?文件系统的更新怎么样?

    我有一个关于如何解决这个问题的想法 但我想知道是否有更简单 更可扩展的方法来解决我的问题 我正在开发的程序有两种基本形式的数据 图像以及与这些图像相关的信息 与图像相关的信息之前已存储在极其简单的 JET 数据库 四个表 中 结果证明该数据
  • Hibernate 中的 ResultTransformer 返回 null

    我使用 ResultTransformer 仅从实体中选择特定属性 只是我不需要实体中的所有属性 但我面临的问题是当属性是 一对多 时 这是一个简单的例子 Entity Table name STUDENT public class Stu
  • 所有小部件的颤动填充?

    我正在尝试在卡片小部件中的某些文本和图标的顶部和底部添加一些填充 我发现 flutter 有一种简单的方法可以对容器执行此操作 但似乎找不到对其他小部件执行此操作的方法 除了将它们包装在容器中之外 这是我到目前为止得到的代码 body ne
  • “use asm”到底是做什么的?

    据我所知 Asm js只是JavaScript的严格规范 它使用了JavaScript的特性 并不是一门新语言 例如 不要使用var a e 它提供var a e 0 我的问题是 如果asm js只是一个定义 并且可以通过改变使用和声明变量
  • 从 Symfony2 控制器中删除 Doctrine 生命周期事件

    我正在寻找删除一个Doctrine Extensions 生命周期事件监听器 https github com l3pp4rd DoctrineExtensions blob master lib Gedmo Tree TreeListen
  • 从 ClaimsIdentity 检索 WindowsIdentity 的最佳方法是什么

    到目前为止 我找到了两种从 ClaimsIdentity 获取 WindowsIdentity 对象的解决方案 首先 我提取用户主体名称 upn ClaimsIdentity ci ClaimsIdentity Thread Current
  • Ag-Grid 链接与单元格中的链接

    我正在使用 ag grid 构建 Angular 4 应用程序 但在尝试找出如何在单元格中放置链接时遇到问题 有人可以帮我解决这个问题吗 谢谢 请检查这个demo https plnkr co edit anJSAE p preview c
  • 如何在 Rust 中序列化 Arc>?

    我有一个特质DataSet 我已经实现了Serialize像这样 impl Serialize for dyn DataSet fn serialize
  • 仅通过客户端使用 Firestore 及其功能是否安全? [复制]

    这个问题在这里已经有答案了 如果我在应用程序中使用 prod 环境变量并为 Firestore 设置服务器端规则 我的应用程序是否可以完全安全地执行 CRUD 和身份验证 我问这个问题是因为我一直在观看相当著名的 YouTube 内容创建者
  • 使用 jQuery 重新加载 MVC2 用户控件

    我知道我今天有很多问题 但仍然试图以正确的方式学习 MVC 2 来控制一切 在我进入这个问题之前 我已经尝试过提供的解决方案here https stackoverflow com questions 826450 how can i re
  • 如何在 OS/X 中将 shell 变量设置为求值结果

    在 Linux Bash 中我可以执行以下操作 export CP cat classpath txt 如果我们执行 cat classpath 我们会看到一个非常长的输出 这就是我不在这里重现的原因 然而在 OS X 中 相同的命令会导致
  • 如何将 jpeg 图像目录转换为张量流中的 TFRecords 文件?

    我的训练数据是 jpeg 图像的目录和包含文件名和关联类别标签的相应文本文件 我正在尝试将此训练数据转换为 tfrecords 文件 如张量流文档中所述 我花了相当多的时间试图让它工作 但张量流中没有示例演示如何使用任何读取器读取 jpeg
  • 根据另一个数组的元素对一个数组进行排序

    我有一个 id 数组 a1 1 2 3 4 5 我还有另一个 id 为随机顺序的对象数组 a2 obj with id 5 obj with id 2 obj with id 1 obj with id 3 obj with id 4 现在