快速打乱一个数组排序的方式有哪些?

简介: 快速打乱一个数组排序的方式有哪些?

有几种常见的方式可以快速打乱一个数组的排序:

  1. 使用 Fisher-Yates 洗牌算法:这是一种经典的打乱数组排序的算法。它的思想是从数组的最后一个元素开始,逐步向前遍历,对每个元素随机选择一个位置进行交换。可以使用以下代码实现:
function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}
  1. 使用数组的 sort 方法:sort 方法可以接受一个比较函数作为参数,我们可以在比较函数中随机生成 -1、0 或 1 来打乱数组的顺序。例如:
function shuffleArray(array) {
  return array.sort(() => Math.random() - 0.5);
}
  1. 使用现代的打乱算法库:如果你不想自己实现打乱算法,可以使用一些现成的库,例如 Lodash 的 shuffle 方法或者 Durstenfeld 版本的 Fisher-Yates 洗牌算法。使用这些库可以更方便地实现数组的打乱。例如:
// 使用 Lodash 的 shuffle 方法
const shuffledArray = _.shuffle(array);
// 使用 Durstenfeld 版本的 Fisher-Yates 洗牌算法
function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

以上是几种常见的快速打乱数组排序的方式,你可以根据自己的需求选择适合的方法。

目录
相关文章
|
数据可视化 定位技术 Python
【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码
【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码
3360 0
|
存储 SQL JSON
Delta Lake、Hudi与Iceberg详解
Delta Lake、Hudi与Iceberg详解
1328 0
Delta Lake、Hudi与Iceberg详解
|
2月前
|
传感器 数据采集 算法
STM32的SPI双机通信实现
STM32的SPI双机通信实现
365 0
|
SQL 安全 JavaScript
如何确保在iframe中加载的表单数据安全传输
如何确保在iframe中加载的表单数据安全传输
IBSS、BSS和ESS之间的区别
【8月更文挑战第23天】
1459 0
|
SQL 数据处理 API
实时计算 Flink版产品使用问题之怎么新建自建的doris catalog
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
弹性计算 运维 自然语言处理
TapTap 算法平台的 Serverless 探索之路
Serverless 在构建应用上为 TapTap 节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。
TapTap 算法平台的 Serverless 探索之路
|
前端开发 数据安全/隐私保护 网络架构
Base64编码是加密算法吗?
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情 大家好,我是阿萨。昨天和开发同学一起开会的时候。开发同学说到了用Base64编码,我立即说 不能使用Base64加密。然后开发来了一句Base64不是加密算法。当时懵了。默默记下这个知识点,回来学习下。
538 0
Base64编码是加密算法吗?