Java 中洗牌数组10 Sept 2024 | 4 分钟阅读 在编程世界中,操作数组是一项基本技能。数组可以被乱序,包括随机重排其元素,这是一种常见的处理过程。这个过程对于构建随机化的游戏牌组、运行统计模拟或仅仅是更随机地显示数据至关重要。最初,我们可以应用很多逻辑来乱序数组;我们可以使用不同类型的集合框架,如 ArrayList、hash sets、linked lists 等。数组的乱序可以通过不同的方式完成,而且 乱序数组的算法以下是乱序数组的算法: 步骤 1: 开始 步骤 2: 从数组的最后一个元素开始,向第一个元素倒序遍历。 步骤 3: 对于索引为 i 的每个元素,生成一个随机索引 j,其中 j 在范围 [0, i] 内。 步骤 4: 交换索引 i 和 j 处的元素。 步骤 5: 对数组中的所有元素重复步骤 2 和 3,从最后一个元素向第一个元素倒序遍历。 步骤 6: 结束 我们可以乱序包含整数、字符等不同类型元素的数组。 Fisher-Yates 乱序算法以下 Java 程序用于乱序一个由整数组成的数组。 ArrayShuffle.java 输出 1 3 2 4 5 如果您在自己的系统上执行,输出可能会有所不同,因为它会随机排列元素并输出乱序后的数组。 复杂度 乱序算法的空间复杂度为 O(1),因为它不使用任何取决于数组大小的额外数据结构。shuffleArray() 方法中使用的 Fisher-Yates 乱序算法的时间复杂度为 O(n),其中 n 是数组中的元素数量。 使用 List 在 Java 中乱序数组ShuffleArray.java 输出 [4, 1, 7, 3, 6, 5, 2] 如果您在自己的系统上执行,输出可能会有所不同,因为它会随机排列元素并输出乱序后的数组。 复杂度 空间复杂度也为 O(n)。这是因为 Collections.shuffle() 方法会就地修改原始列表,而不使用任何其他额外的数据结构。此代码的时间复杂度为 O(n),其中 n 是数组中的元素数量。 乱序字符数组ShuffleCharacters.java 输出 Shuffled Characters: [e, f, g, d, a, c, b] 如果您在自己的系统上执行,输出可能会有所不同,因为它会随机排列元素并输出乱序后的数组。 复杂度 乱序算法的空间复杂度为 O(1),因为它不使用任何取决于数组大小的额外数据结构。shuffleArray() 方法中使用的程序的 time complexity 为 O(n),其中 n 是数组中的字符数量。 结论在 Java 中乱序数组是一项至关重要的技能,它使开发人员能够创建随机且无偏见的数据排列。在本探索过程中,我们涵盖了两种有效的方法:对于非原始数组,使用 Collections.shuffle() 方法;对于原始数组,实现 Fisher-Yates 乱序算法。Collections.shuffle() 方法通过利用内置功能,简化了对象或非原始数组的乱序过程。另一方面,Fisher-Yates 算法提供了一种高效且无偏见的方式来乱序原始数组,确保了排列的均匀性。 下一主题Java 中的静态对象 |
不使用循环打印从 N 到 1 的数字是理解 Java 中递归的一个好练习,只需将循环计数器 i 替换为递归函数的参数。平均而言,要完成重复性任务,如倒计时,您必须使用循环。但是,递归会...
阅读 4 分钟
? 在编程中,平均星级评分用于用户反馈和评论系统。对于处理用户反馈和评论系统的开发人员来说,计算平均星级评分至关重要。无论我们是开发一个集成用户评论的系统,还是其他系统,精确计算平均评分都至关重要……
阅读 4 分钟
Fail-fast 和 Fail-safe 是 Java 中的迭代器或集合。Java SE 规范不使用 Fail-safe 一词。我们使用 Fail-safe 来区分非 Fail-fast 和 Fail-fast 迭代器。Fail-Fast 系统会尽快终止暴露故障的迭代操作,并停止整个操作……
阅读 6 分钟
逻辑计算和编程都依赖于 XOR(异或)运算。Java 中的 XOR 运算符提供了一种快速简便的方法来处理二进制数据和执行位运算。本节将全面介绍 Java 中 XOR 运算的细节,...
阅读 4 分钟
javax.naming.CompositeName 类具有 equals() 函数。CompositeName 类用于通过将此 CompositeName 与作为参数传递的给定对象进行比较,来确定两个对象是否相等。如果对象相等,则 equals() 方法返回 true;否则,它...
阅读 6 分钟
程序员通常会编写许多 Java 模式程序进行编码练习和面试。模式程序通常在面试中被问到,以检查逻辑思维及其在程序中的实现。在本节中,我们将创建 Java 程序来打印空...
阅读 4 分钟
鉴于 Java 的基础自主性,串行接口是困难的。串行通信需要标准化的编程接口和明确的阶段执行,这对于 Java 来说是困难的。悲剧的是,Sun 对 Java 中的串行通信并未给予太多关注。Sun 已经定义了一个串行通信编程接口...
阅读9分钟
线程是正在执行的程序,用于执行特定任务。Java 线程的生命周期从其诞生开始,到其消亡结束。Thread 类的 start() 方法用于启动线程的执行,它会……
5 分钟阅读
A 是声明新 Java 类的最常用关键字。类是包含代码块的容器,代码块包括字段、方法、构造函数等。类是创建对象的模板或蓝图。它...
阅读 2 分钟
Java 的基本数据结构 HashMap,使程序员能够有效地存储和检索数据。在处理复杂数据结构时,HashMap 的嵌套是一个有用的概念。在本节中,我们将讨论嵌套 HashMap、它的优点以及在应用程序中的实现。理解和应用 Map...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India