C++ 中通过交换相邻的奇偶对能得到的最小数2025年5月14日 | 阅读 4 分钟 目标是重新排列给定数字的数字,以生成最小的可能数字,同时确保相邻数字表示偶数-奇数对。这在 C++ 中被称为“交换相邻偶数-奇数对”问题。
1. 冒泡排序方法冒泡排序是一种流行且易于理解的排序算法,可有效解决各种排序问题。当用于识别通过交换相邻偶数-奇数对可以获得的最小数字时,冒泡排序方法提供了一个简单的解决方案。 使用此方法,我们从左到右查看数字的数字。我们迭代地遍历数字,比较相邻的对。如果相邻的对(偶数后跟奇数)顺序错误,我们交换它们以纠正顺序。重复此过程,直到不再需要交换以确保相邻数字形成偶数-奇数对。 算法步骤步骤 1: 输入一个未排序的数字数组。 步骤 2: 创建一个循环,重复遍历数组,直到每个元素都排序。 步骤 3: 在循环中遍历数组中的每对相邻元素。 步骤 4: 验证每对中第一个元素是奇数,第二个元素是偶数。如果为 true,则交换元素。 步骤 5: 将刚刚交换的元素与数组中它之前的元素进行比较。如果需要,用较小的元素替换之前交换的元素。 步骤 6: 重复该过程,直到每对都经过验证和排序。 步骤 7: 如果在任何迭代期间没有执行任何交换,则数组已排序,并且可以终止循环。 步骤 8: 排序过程完成后,打印排序后的数组。 示例让我们举一个例子来说明在 C++ 中使用冒泡排序方法交换相邻偶数-奇数对问题。 输出 Please enter the number of elements: 8 Enter the elements separated by space: 7 2 5 9 10 12 8 1 1 5 7 9 2 8 10 12 说明此 C++ 代码使用冒泡排序方法对整数数组进行排序,该方法确保相同奇偶性的整数保持相同的相对顺序,并且偶数-奇数对按升序排序。BubbleSort 函数根据指定条件迭代地交换数组中的相邻元素。该方法在每次迭代中根据相邻元素是否形成偶数-奇数对或具有相同奇偶性但顺序错误来执行交换。如果在迭代期间没有进行任何交换,则 swapped 标志表示数组已经排序,这通过跳出循环优化了排序过程。 之后,主函数要求用户输入数组的元素和元素数量,使用 BubbleSort 排序数组,并打印排序后的数组。 2. 贪心方法
示例让我们举一个例子来说明在 C++ 中使用贪心方法交换相邻偶数-奇数对问题。 输出 Please enter the number: 2145367 The smallest number after swapping the adjacent even-odd pairs is: 2145637 说明此 C++ 代码交换给定数字(以字符串表示)中的相邻偶数-奇数对,以尝试发现最小的可能数字。smallestNumberSwappingPairs 函数遍历字符串,找到偶数索引处的偶数数字和奇数索引处的奇数数字。为了保持偶数-奇数配对,如果找到这样的对,它会交换这些数字。之后,主函数提示用户输入一个数字;它运行 smallestNumberSwappingPairs 函数来交换相邻的偶数-奇数对,以获得最小的可能数字。之后,打印结果。总的来说,该代码有效地使用交换方法来最小化数字,同时保持偶数-奇数对的顺序。 下一主题C++ 中的自定义混乱单词游戏 |
简介:Sleep Sort 算法是一种非传统且富有创意的排序数字的方法,它依赖于系统计时来间接实现所需的顺序。Sleep Sort 的基本思想是,较大的数字可以“睡眠”或延迟更长的时间...
阅读 10 分钟
在 C++ 中,一个数字的数字既不严格递增也不严格递减,则称为“弹跳数”。例如,134468 递增,987654 递减,而 155349 弹跳,它同时表现出这两种趋势。位数少于 100 的数字不会弹跳。一个数字可以被认为是...
5 分钟阅读
C++ 中的 std::common_type<T1, T2>::type 函数 在本文中,我们将讨论 C++ 中的 std::common_type<T1, T2>::type 函数,包括其语法、参数、关键概念和示例。C++ 中的 std::common_type<T1, T2>::type 函数是什么?在 C++ 中,一组类型之间的共同类型通过 std::common_type... 来识别。
阅读 4 分钟
在本文中,我们将讨论如何将整个 ASCII 文件读入 C++ std::string。在进行实现之前,我们必须了解 C++ 中的 ASCII 文件。什么是 ASCII 文件?转换为 ASCII 格式的文件允许数据导入……
阅读 2 分钟
在本文中,我们将讨论 C++ 中打印 V 形和倒 V 形图案的程序及其实现、时间复杂度和空间复杂度。1. 倒 V 形图案:给定值 n,打印倒 V 形图案。示例 1:让我们举一个例子来说明倒 V 形...
阅读 8 分钟
存在一只松鼠、几颗坚果和一棵树。二维网格的单元格表示位置。最终,我们想确定松鼠为了单独收集每颗坚果并将其放到树下而可以走的最短路径。可以向...
阅读 4 分钟
在本文中,我们将讨论 C++ 中的 Moser-de Bruijn 序列及其实现。为了理解这一点,我们回顾了在 C++ 中利用数学关系来识别序列中任何 Nth 项的策略……
阅读 3 分钟
理解霍夫施塔特数列(Hofstadter sequence)是一个有趣的数学序列,常用于在编程中演示递归和算法问题解决方法。它以美国计算机科学家道格拉斯·霍夫施塔特(Douglas Hofstadter)的名字命名。这个序列一直是计算理论中许多探索的主题,而且……
5 分钟阅读
在本文中,我们将通过几个例子讨论五面体数。什么是五面体数?五面体数由帕斯卡三角形的每一行的第五个数字表示,从至少包含五个数字的行开始。公式:以下是... 的公式。
阅读 4 分钟
简介:备忘录模式是一种行为设计模式,用于捕获对象的内部状态并将其外部化,以便以后可以恢复到该状态而不违反封装。当您需要实现撤销机制、检查点时,此模式特别有用……
阅读 10 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India