随机化数组的有效方法 - Shuffle 代码

2024-01-03

我在面试中被问到这个问题,我给出了各种解决方案,但面试官并不相信。我有兴趣找到解决方案。请提出您的看法:

问:编写一个高效的数据结构来实现 ipod 中的 shuffle。它必须播放所有歌曲,每次以不同的随机顺序播放,同一首歌曲不应重复。 (大部分是 O(n))

面试后我想到了一个解决方案:我可以进行随机快速排序而不需要递归。我们随机选择 1 个主元 O(1),然后进行快速排序 O(n)。现在歌曲将按某种顺序排序,我会一直播放到最后。一旦到达终点,我将再次选择一个随机枢轴,并一次又一次地重复这个过程。

问候, 塞图


你想要的费舍尔-耶茨洗牌 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle。请注意该页面上提到的实施错误,因为您当前接受的答案不符合其中之一。

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

随机化数组的有效方法 - Shuffle 代码 的相关文章

  • 为什么 System.nanoTime() 比 System.currentTimeMillis() 慢(性能)?

    今天我做了一个快速基准测试来测试速度性能System nanoTime and System currentTimeMillis long startTime System nanoTime for int i 0 i lt 1000000
  • 为什么 Java 11 中对于空白字符串 String.strip() 比 String.trim() 快 5 倍

    我遇到过一个有趣的场景 因为某些原因strip 针对空白字符串 仅包含空格 明显快于trim 在Java 11中 基准 public class Test public static final String TEST STRING 3 w
  • 将数据从一个线程传递到另一个线程的最快可能方法

    我正在使用增强spsc queue将我的东西从一个线程移动到另一个线程 这是我的软件中的关键位置之一 所以我想尽快完成它 我写了这个测试程序 include
  • 优化数据可视化 Web 应用程序的性能

    我正在重写 3 年前编写的数据可视化网络工具 从那时起 浏览器的 JavaScript 引擎变得更快 所以我正在考虑将部分工作从服务器转移到客户端 在页面上 数据在表格和地图 或图表 中可视化 它使用相同的数据 但以不同的方式 因此准备显示
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 线性同余生成器 - 如何选择种子和统计检验

    我需要做一个线性同余生成器 它将成功通过所选的统计测试 我的问题是 如何正确选择发电机的数字以及 我应该选择哪些统计检验 我想 均匀性的卡方频率测试 每代收集10 000个号码的方法 将 0 1 细分为10个相等的细分 柯尔莫哥洛夫 斯米尔
  • 如何有效地找到距给定点最远的点(从一组点中)?

    我正在寻找一种算法或数据结构来解决以下问题 给你一组点 S 然后你会得到另一个点形式的 Q 查询 对于每个查询 找到集合中距离给定点最远的点 集合中最多有 10 5 个点和 10 5 个查询 所有点的坐标都在 0 到 10 5 范围内 我想
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • 在单个 mongodb 查询中查找并计数

    我的文档看起来像这样 id ObjectId 572c4bffd073dd581edae045 name What s New in PHP 7 description PHP 7 is the first new major versio
  • 页面上首次调用 Url.Action 速度很慢

    我有一个相当简单的 ASP MVC 视图的性能问题 这是一个登录页面 应该几乎是即时的 但需要大约半秒钟 经过大量挖掘后 问题似乎出在第一个调用上Url Action 大约需要 450 毫秒 根据迷你分析器 http miniprofile
  • 如何获取numpy.random.choice的索引? - Python

    是否可以修改 numpy random choice 函数以使其返回所选元素的索引 基本上 我想创建一个列表并随机选择元素而不进行替换 import numpy as np gt gt gt a 1 4 1 3 3 2 1 4 gt gt
  • 时间序列数据预处理 - numpy strides 技巧以节省内存

    我正在预处理一个时间序列数据集 将其形状从二维 数据点 特征 更改为三维 数据点 时间窗口 特征 在这样的视角中 时间窗口 有时也称为回顾 指示作为输入变量来预测下一个时间段的先前时间步长 数据点的数量 换句话说 时间窗口是机器学习算法在对
  • 通过 SQLAlchemy 获取随机行

    如何使用 SQLAlchemy 从表中选择一个或多个随机行 这在很大程度上是一个特定于数据库的问题 我知道 PostgreSQL SQLite MySQL 和 Oracle 具有通过随机函数排序的能力 因此您可以在 SQLAlchemy 中
  • Haskell:IORef 的性能

    我一直在尝试在 Haskell 中编码一个需要使用大量可变引用的算法 但与纯粹的惰性代码相比 它 也许并不奇怪 非常慢 考虑一个非常简单的例子 module Main where import Data IORef import Contr
  • Pandas dataframe:每批行的操作

    我有一个熊猫数据框df我想计算每批行的一些统计信息 例如 假设我有一个batch size 200000 对于每批batch sizerows 我想要一列的唯一值的数量ID我的数据框 我怎样才能做这样的事情呢 这是我想要的一个例子 prin
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 使用 FileInputStream 时如何确定理想的缓冲区大小?

    我有一个从文件创建 MessageDigest 哈希 的方法 我需要对很多文件 gt 100 000 执行此操作 用于读取文件的缓冲区应该设置多大才能最大限度地提高性能 大多数人都熟悉基本代码 为了以防万一 我将在这里重复一遍 Messag
  • 一段 R 代码会影响 foreach 输出中的随机数吗?

    我使用运行模拟foreach and doParallel并与随机数 名为random在代码中 简而言之 我模拟一个足球联赛 随机生成所有比赛的获胜者以及相应的结果 在dt base没有比赛进行 在dt ex1 and dt ex24场比赛
  • Data.Sequence 中的 inits 和 tails 如何工作?

    Louis Wasserman 编写了当前的实现inits and tails in Data Sequence 他表示它们非常高效 事实上 只要查看代码 我就可以看到 无论它们在做什么 它们都是以干净 自上而下的方式进行的 这往往会给惰性

随机推荐

  • Ansible:如何在set_fact模块中对整数变量进行算术运算?

    有谁知道如何在set fact模块中对整数变量进行算术赋值 目前 我设法通过使用 Jinja2 模板使用 String 变量来做到这一点 如下所示 set fact flagStr 0 name Add by one one one set
  • OnPropertyChange 在当前上下文中不存在?

    似乎看不出我哪里出错了 OnPropertyChange 没有被重新确认任何建议吗 public class MedicationList INotifyPropertyChanged public int MedicationID get
  • 从另一个 Java 程序运行 Hadoop 作业

    我正在编写一个程序 该程序接收映射器 缩减器的源代码 动态编译映射器 缩减器并从中生成 JAR 文件 然后它必须在 hadoop 集群上运行这个 JAR 文件 对于最后一部分 我通过代码动态设置所有必需的参数 然而 我现在面临的问题是 代码
  • 如何在flutter web中添加自定义字体?

    所以我现在正在开发 flutter 移动应用程序一段时间了 我想探索 flutter web 现在我尝试添加自定义字体 但它没有显示自定义字体 我已经添加了所有依赖项 并为字体创建了一个单独的文件夹 并将其添加到 pubspec yaml
  • Behat/Mink 无法模拟点击页脚中的按钮[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 尝试对页脚中的项目使用 然后我按 对
  • Heroku 陷入为 NodeJs 应用程序构建源代码的困境

    当我尝试在 heroku 上部署我的应用程序时 它陷入了远程 构建源 一开始以为是网络问题 换了网络 但是问题依旧 我也尝试过强制推送 也没用 Counting objects 100 19 19 done Delta compressio
  • Windows光标最大尺寸

    我有一个大小为 128x128 的光标 但是当我使用 LoadCursor 加载并显示它时 它只有 32x32 哪个API可以正确实现 MS 似乎调整了它的大小 谢谢 Windows XP 不包含任何大于 32x32 的系统光标 如果包含较
  • 更改 github 帐户 mac 命令行

    我有两个 github 帐户 一个用于工作 一个用于家庭 我正在处理一个个人项目 无法推送到 origin master 因为它说我仍然登录到我的工作帐户 我重置了我的全局用户 user name user email user token
  • React Admin - 如何使用 abc/def 等嵌套路径调用 dataProvider

    React admin 的Resource组件图name端点的 prop 值 例如 访问数据 http example com abc your Resource组件看起来像这样
  • Jasper 报告 HTML 组件

    我设计了一个简单的报告 将 HTML 调色板放入其中 iFrame 当我运行报告时 我收到此异常 java lang ClassNotFoundException net sf jasperreports components html H
  • 将 apache-spark 日志记录发送到 Amazon EMR 集群上的 redis/logstash 的最佳方法 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Amazon EMR 集群上触发提交作业 我希望将所有 Spark 日志记录发送到 redis logstash 在 EMR 下配置
  • Pandas 将用户代理列解析为多列

    我有一个 http 请求日志的数据框 唯一相关的列是我正在尝试解析的 userAgent 列 我正在使用 ua parser 这会将每个 userAgent 变成一个嵌套字典 如下所示 gt gt gt from ua parser imp
  • 如何在 MIPS 汇编中找到没有除法或模运算符的余数

    我想找到一种方法来知道一个整数是除以3还是7而不使用除法 因为它在MIPS汇编中非常慢 我做了很多研究但一无所获 有一种方法描述为格兰隆德和蒙哥马利 https gmplib org tege divcnst pldi94 pdf需要 奇
  • 如何将依赖子查询转换为联接以获得更好的性能?

    我有一个存储 主题 的数据库 每个主题都与一大堆图像相关联 这些主题的屏幕截图 现在我想显示最新的 10 个主题 对于每个主题 我只想从数据库中获取一张图像 ID 最低的图像 目前我的查询如下所示 我正在使用子查询 SELECT DISTI
  • ListPopupWindow 不遵守 WRAP_CONTENT 宽度规范

    我正在尝试使用 ListPopupWindow 通过ArrayAdapter 最终这将是一个更复杂的自定义适配器 代码如下 如截图所示 得到的结果ListPopupWindow看起来就像内容宽度为零一样 它显示了正确的项目数量 这些项目仍然
  • HighCharts - 将系列与值而不是百分比进行比较

    只需一个简单的答案 是否有一种简单的方法可以比较一系列值而不是百分比 像 比较 值 而不是 比较 百分比 之类的东西 或者我是否必须手动添加给定时间间隔的数据点 谢谢 是的 但该选项称为value 来自绘图选项 系列 比较 http api
  • 会话重放、会话固定、会话劫持

    谁能明确区分会话固定 会话重放和会话劫持攻击吗 我读了很多文章 但会话劫持和会话重放攻击之间的问题仍然不清楚 固定和劫持最终都有相同的目标 获得会话的访问权限 它们的区别仅在于实现这一目标的方式不同 会话劫持的行为很简单stealing现有
  • Jekyll:javascript 中的液体标签

    假设我有两个链接 所有帖子 和 个人 当用户单击 个人 链接时 他应该只能看到类别为 个人 的帖子 现在 液体标签是 for post in site posts 我想了解是否有办法访问该变量site posts来自 javascript
  • 构造函数内的 Try/catch 块

    在构造函数中使用 try catch 块是一种不好的编程习惯吗 或者只要我们的程序优雅地处理类型初始化器异常就没有什么区别 在 C 中 如果构造函数内有任何异常 框架总是会抛出 typeinitilizer 异常 谢谢 沙米卡 System
  • 随机化数组的有效方法 - Shuffle 代码

    我在面试中被问到这个问题 我给出了各种解决方案 但面试官并不相信 我有兴趣找到解决方案 请提出您的看法 问 编写一个高效的数据结构来实现 ipod 中的 shuffle 它必须播放所有歌曲 每次以不同的随机顺序播放 同一首歌曲不应重复 大部