Permutation of Numbers in Java2025年4月2日 | 阅读 8 分钟 在本节中,我们将创建一个Java程序来查找数字的排列和循环排列。在继续本节之前,首先我们将通过示例理解排列。 排列在数学中,排列是一种方法或技术,通过它可以确定集合中可能的排列。在考虑顺序的情况下选择和排列项目的数量。简而言之,排列就是排列的数量。在确定排列时,请牢记顺序。它用字母P表示。 换句话说,这是一种技术,通过它可以按特定顺序从给定的 n 个对象中排列(或选择)r 个对象。 在数学上,我们可以使用以下公式找到数字的排列 ![]() 其中, P: P 是排列的数量。 n: n 是集合中对象的总数。 r: r 是从集合中选择对象的数量。 !: 这个符号表示阶乘。 例如,如果 XYZ 是一个单词,那么该单词的可能排列是 XYZ, XZY, YXZ, YZX, ZXY, ZYX 因此,我们可以以六种不同的方式排列单词 XYZ。 让我们看一个示例。 示例:有六个人参加短剧表演。有多少种方式可以颁发一等奖和二等奖? 解决方案 给定 n=6, r=2, P=? 根据上述公式 ![]() 分子和分母中都出现了 4, 3, 2, 1,因此它们被抵消了。 P(6,2)=6*5 P(6,2)=30 因此,有 30 种可能的奖项组合方式来颁发一等奖和二等奖。 让我们在 Java 程序中实现上述方法。 PermutationExample1.java 输出 Enter the Value of n and r: 7 4 The permutation of P(n, r) = 840 让我们创建另一个 Java 程序,查找大于自身数字的数字 n 的排列。 PermutationExample2.java 输出 132 213 231 312 321 使用 Heap 算法这是一个迭代算法。通过使用 Heap 算法,我们可以找到 n 个对象的所有排列。
让我们用 Java 程序实现该算法。 PermutationExample3.java 输出 8 2 6 7 2 8 6 7 6 8 2 7 8 6 2 7 2 6 8 7 6 2 8 7 7 2 6 8 2 7 6 8 6 7 2 8 7 6 2 8 2 6 7 8 6 2 7 8 7 8 6 2 8 7 6 2 6 7 8 2 7 6 8 2 8 6 7 2 6 8 7 2 7 8 2 6 8 7 2 6 2 7 8 6 7 2 8 6 8 2 7 6 2 8 7 6 使用递归算法递归算法使用回溯。它通过每次迭代交换一个元素来确定数字的排列。 ![]() 让我们用 Java 程序实现该算法。 PermutationExample4.java 输出 come coem cmoe cmeo cemo ceom ocme ocem omce omec oemc oecm moce moec mcoe mceo meco meoc eomc eocm emoc emco ecmo ecom 随机算法我们也可以应用随机算法来确定数字的排列。当 n 的值很大时使用它。该算法通过混洗数组来生成排列。对于混洗,Java Collections 类提供了 shuffle() 方法。 shuffle() 方法使用默认的随机源随机排列指定的 List。它以向后(从最后一个元素到第二个元素)的方向遍历列表。它将选定的元素与当前位置随机交换。该方法运行时间为线性。该方法的签名是 生成循环排列由单个循环组成的排列称为循环排列。它以固定的偏移量移动集合的所有元素。该技术可以应用于任何整数,以 任意数量的位置循环右移或左移。如果一个集合的元素为 {a, b, c},则
假设 n 是要查找其循环排列的数字。我们可以通过以下步骤找到循环排列。它生成下一个排列。 我们执行上述步骤,直到得到原始数字。一旦我们得到原始数字,我们就停止执行上述步骤并返回余数。 例如,求以下分数的除法 2/7 = 0.285714... 4/7 = 0.571428... 1/7 = 0.142857... 让我们创建一个 Java 程序,生成所有可能的循环排列。 PermutationExample5.java 输出 9871 1987 7198 8719 下一个主题Void-keyword-in-java |
在本节中,我们将学习什么是友好数,并创建 Java 程序来检查给定数是否为友好数。友好数程序经常在 Java 编码测试和学术界中出现。友好数 友好数是两个不同的...
阅读 4 分钟
Java 中的 MulticastSocket 类是 DatagramSocket 类的子类,用于发送和接收多播数据报。多播数据报是一种发送到网络上主机组的数据报。MulticastSocket 类提供了加入和离开...
7 分钟阅读
在多线程编程中,thread 是一个部分。为了编写一个使用 2 个线程打印奇偶数的代码,需要具备多线程的知识。现在,我们需要按自然顺序打印出奇数和偶数,直到...
11 分钟阅读
给出了一个包含 n 个整数的数组 arr[]。我们的任务是以形成摆动序列的方式对数组进行排序。如果存在多个摆动序列,则打印其中任何一个。数组的摆动序列满足...
阅读 6 分钟
Java 是一种流行的面向对象编程语言,用于创建各种平台的软件。Java 处理并发的能力,允许同时执行多个进程,是其重要的特性之一。使用工作线程是实现并发的一种方法……
5 分钟阅读
给定一个二叉树,任务是打印该树中每个回文级别的节点。回文级别如果二叉树的任何级别从左到右遍历与从右到左遍历的结果相同,则认为该级别是回文的。示例 1:输入:...
7 分钟阅读
如何在 Java 中读取 CSV 文件?CSV 代表逗号分隔值。它是一种简单的文件格式,用于以简单的文本形式存储表格数据,例如电子表格或数据库。CSV 格式的文件可以导入到...
7 分钟阅读
java.text 中的内置方法之一是 getMaximumIntegerDigits()。Java 的 DecimalFormat 类用于确定数字整数部分可以包含的最大位数。数字中出现在小数点 (.) 之前的部分称为...
阅读 2 分钟
Java 接口变量 Java 接口提供了一种定义类实现契约或蓝图的方法。除了方法,接口还可以包含变量。这些变量称为接口变量或常量。请注意,接口变量是 public、static 和 final 的,由...
阅读 4 分钟
Java 编程语言一直在不断发展,以满足现代软件开发的需求。这次演进中的两个重要里程碑是 Java 8 和 Java 9。这些版本为语言、库和运行时环境带来了重大的变化和增强。Java 8 和...之间的主要区别
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India