使用C++重新排列数组顺序 – 最小值、最大值、第二小值、第二大值

使用c++重新排列数组顺序 - 最小值、最大值、第二小值、第二大值

我们得到一个数组;我们需要按以下顺序排列此数组:第一个元素应该是最小元素,第二个元素应该是最大元素,第三个元素应该是第二个最小元素,第四个元素应该是第二个最大元素,依此类推示例 –

Input : arr[ ] = { 13, 34, 30, 56, 78, 3 }Output : { 3, 78, 13, 56, 34, 30 }Explanation : array is rearranged in the order { 1st min, 1st max, 2nd min, 2nd max, 3rd min, 3rd max }Input : arr [ ] = { 2, 4, 6, 8, 11, 13, 15 }Output : { 2, 15, 4, 13, 6, 11, 8 }

寻找解决方案的方法

可以使用两个变量“x”和“y”来解决它们所指向的位置到最大和最小元素,但是对于该数组应该是排序的,所以我们需要先对数组进行排序,然后创建一个相同大小的新空数组来存储重新排序的数组。现在迭代数组,如果迭代元素位于偶数索引,则将 arr[ x ] 元素添加到空数组并将 x 加 1。如果该元素位于奇数索引,则将 arr[ y ] 元素添加到空数组空数组并将 y 减 1。执行此操作,直到 y 变得小于 x。

示例

#include using namespace std;int main () {   int arr[] = { 2, 4, 6, 8, 11, 13, 15 };   int n = sizeof (arr) / sizeof (arr[0]);   // creating a new array to store the rearranged array.   int reordered_array[n];   // sorting the original array   sort(arr, arr + n);   // pointing variables to minimum and maximum element index.   int x = 0, y = n - 1;   int i = 0;   // iterating over the array until max is less than or equals to max.   while (x <= y) {   // if i is even then store max index element      if (i % 2 == 0) {         reordered_array[i] = arr[x];         x++;      }      // store min index element      else {         reordered_array[i] = arr[y];         y--;      }      i++;   }   // printing the reordered array.   for (int i = 0; i < n; i++)      cout << reordered_array[i] << " ";   // or we can update the original array   // for (int i = 0; i < n; i++)   // arr[i] = reordered_array[i];   return 0;}

输出

2 15 4 13 6 11 8

上述代码说明

变量初始化为x=0 和 y = array_length(n) – 1。while( x如果计数为偶数 (x),则将该元素添加到最终数组,并且变量 x 递增1。如果 i 是奇数,则将 (y) 该元素添加到最终数组中,并且变量 y 减 1。最后,存储重新排序后的数组在reordered_array[]中。

结论

在本文中,我们讨论了以最小、最大形式重新排列给定数组的解决方案。我们还为此编写了一个 C++ 程序。同样,我们可以用任何其他语言(如 C、Java、Python 等)编写此程序。我们希望本文对您有所帮助。

以上就是使用C++重新排列数组顺序 – 最小值、最大值、第二小值、第二大值的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:05:41
下一篇 2025年12月15日 13:26:28

相关推荐

  • 第n个卡塔兰数的C/C++程序是什么?

    卡塔兰数是一系列数字。卡塔兰数是一系列自然数,在各种计数问题中出现,通常涉及递归定义的对象。 Cn是长度为2n的Dyck词的数量。Dyck词是由n个X和n个Y组成的字符串,使得字符串的任何初始片段中Y的数量不超过X的数量。例如,以下是长度为6的Dyck词: XXXYYY XYXXYY XYXYXY …

    2025年12月17日
    000
  • 在C++中,Midy的定理

    我们得到整数值a_num,它将存储分子和p_den,它将存储应该是素数的分母。任务是检查a_num除以p_den后的运算是否证明了midy定理。 证明Midy定理的步骤是- 输入分子为 a_num,分母为 p_den,应始终为素数。 将数字相除。检查重复的小数值。 存储小数值,直到它们不重复。 立即…

    2025年12月17日
    000
  • 交换每两个字节中的每两个位

    在本文中,我们将讨论交换给定数字中的每个交替位的代码解决方案,并返回结果数字。我们将使用位操作的概念来解决这个问题,以在不使用任何循环的情况下以恒定时间解决问题。 Problem statement − We are given a number n, we have to swap the pai…

    2025年12月17日
    000
  • 二进制数的1的补码和2的补码是什么?

    二进制数以基数 2 表示。它仅使用“0”和“1”两位数字。二进制数中的每个数字都是一个位。 示例二进制数 – 0100010111 1 的补码 二进制的补码number 是通过将二进制数的数字反转,即 1 转为 0,0 转为 1 得到的。 示例 1’s Complement …

    2025年12月17日
    000
  • C++程序:找出将一个盒子放入另一个盒子后可见的盒子数量

    解决一个问题,我们给定一个包含盒子尺寸的数组。现在我们有一个条件,如果大盒子的尺寸至少是小盒子的两倍,那么我们可以把小盒子放进大盒子里。现在我们必须确定有多少个可见的盒子,例如。 Input : arr[] = { 1, 3, 4, 5 }Output : 3Put a box of size 1 …

    2025年12月17日
    000
  • 在C程序中,编译时错误和运行时错误之间的区别是什么?

    错误或异常是指由于代码执行中断而无法达到预期结果的情况。根据生成或识别错误的事件,我们可以将其分类为编译时错误和运行时错误。 以下是编译时错误和运行时错误之间的重要区别。 序号 关键 编译时错误 运行时错误 1参考编译时错误通常指与语法或语义相关的错误。另一方面,运行时错误指的是在运行时执行代码时遇…

    2025年12月17日
    000
  • 安排一个二进制字符串,以在索引范围内获得最大值。C/C++?

    对于一个由0和1组成的给定字符串,我们给出了M个不相交的范围A,B(A 活动是找到一个合法或有效的排列,同时满足以下两个条件− 所有M个给定范围之间的数字之和最大。 字符串将是字典序最大的。字符串1100的字典序比字符串1001高。 立即学习“C++免费学习笔记(深入)”; 示例 Input1110…

    2025年12月17日
    000
  • 使用旋转卡尺法计算坐标平面上两点间的最大距离

    在 c++ 中,我们有一个预定义函数 sqrt,它返回任何数字的平方根。旋转卡尺法是用于求解算法或计算几何的技术。 旋转卡尺方法的视觉表示 手部旋转显示了旋转卡尺图的真实示例,每当手部旋转时,都会显示垂直方向。我们还可以通过使用多边形来理解这个概念。 在本文中,我们将使用旋转卡尺法求出两个坐标点的最…

    2025年12月17日
    000
  • 在C语言中,将数组中的数字除以前一个数字后,求和

    数组是相同数据类型的元素序列。在这个问题中,我们将考虑使用整数数组来解决问题。在这个问题中,我们将通过将元素与其前面的元素相除来找到元素的总和。 让我们举几个例子来更好地理解这个问题 – 示例 1 – Array : 3 , 5 ,98, 345Sum : 26 解释 − 3…

    2025年12月17日
    000
  • 在一棵树中,使用C++查询子树的深度优先搜索

    在这个问题中,我们得到一棵二叉树,我们需要从特定节点执行 dfs,其中我们假设给定节点作为根并从中执行 dfs。 在上面的树中假设我们需要执行 DFS节点 F 在本教程中,我们将应用一些非正统的方法,以便大大降低我们的时间复杂度,因此我们也能够在更高的约束条件下运行此代码。 立即学习“C++免费学习…

    2025年12月17日
    000
  • C中的存储类

    在C语言中,变量和函数的特征是通过存储类来描述的,例如变量或函数的可见性和作用域。 C语言中有四种类型的存储类:自动变量、外部变量、静态变量和寄存器变量。 auto Auto 存储类别是所有局部变量的默认存储类别。它是在调用函数时创建的。当函数执行完成时,变量会自动销毁。 它们也称为局部变量,因为它…

    2025年12月17日
    000
  • 在C/C++中,int argc和char *argv是用来接收命令行参数的。其中,int argc表示命令行参数的数量,而char *argv是一个指针数组,用来存储每个命令行参数的字符串

    argc代表参数计数,argv代表参数值。这些是在主函数开始执行时传递给它的变量。当我们运行一个程序时,我们可以给该程序提供参数,如− $ ./a.out hello Example 这里hello是可执行文件的一个参数。您可以在您的程序中访问它。例如, #includeusing namespac…

    2025年12月17日
    000
  • 高效地在竞技编程中编写C/C++代码

    在竞技编程中,最重要的是编写有效的代码。优化和更快的代码很重要,可以在程序员的排名上产生差异。 为了在竞技编程中编写有效的C/C++代码,以下是一些有效的工具,可以高效地编写C/C++代码: 首先,让我们回顾一些基本术语: 模板是编写不依赖于特定类型的代码。 立即学习“C++免费学习笔记(深入)”;…

    2025年12月17日
    000
  • 找到第n个幸运数

    幸运数字 – 它是 m > 1 的最小整数,对于给定的正整数 n,pn# + m 是素数,其中 pn# 是第一个 n 的乘积质数。 例如,要计算第三个幸运数字,首先计算前 3 个素数 (2, 3, 5) 的乘积,即 30。加 2 后得到 32,这是偶数,加 3 得到 33,是 3 …

    2025年12月17日
    000
  • C++程序交换一对字符

    字符串是一组字符。它们也可以被描述为字符数组。一个数组字符可以被看作字符串,每个字符串都有一组索引和值字符串中两个指定索引处的字符切换是我们的修改之一有时候可以使字符串发生变化。在本文中,我们将看到如何交换两个字符在一个使用C++从给定的两个索引中提取字符串。 语法 char temp = Stri…

    2025年12月17日
    000
  • 在一个有向加权图中,求解恰好包含k条边的最短路径

    在协调加权图表中,找到具有精确 k 个边的最简短路径的问题包括确定在精确导航 k 个边时权重最小的路径。这将通过采用动态编程策略来实现,例如采用 3D 框架来存储所有可想到的方式中的最小权重。计算在顶点和边上重复,在每一步都调整最小权重。通过考虑具有精确 k 个边的所有可能的方式,计算可以区分图表中…

    2025年12月17日
    000
  • 两两乘积之和

    集合X = {a, b, c}的成对乘积可以定义为所有可能的集合对乘积的和。集合的成对为Y = {a * a, a * b, a *c, b * b, b * c, c * c},其中乘积是可交换的。因此,集合X的成对乘积是集合Y的元素之和,即aa + ab + ac + bb + bc + cc。…

    2025年12月17日
    000
  • 重新排列一个字符串,以最大化任意一对元音字母之间的最小距离

    在本文中,我们将从字符串操作领域解开一个有趣的问题:“重新排列字符串以最大化任何一对元音之间的最小距离”。这个问题挑战我们操纵字符串中字符的排列,以确保任意两个元音字符之间的最大可能的最小距离。我们将详细讨论该问题,提供 C++ 代码实现,并举例说明。 理解问题陈述 给定一个字符串,任务是重新排列字…

    2025年12月17日
    000
  • 查找字符串长度的C程序

    这个字符串实际上是一个由字符组成的一维数组,以一个null 字符’’结尾。因此,一个以null结尾的字符串包含组成字符串的字符,后面跟着一个null。 要找到字符串的长度,我们需要循环并计算循环中的所有字符,直到匹配到‘’字符为止。 例如 输入 −naman  输出 − 字符…

    2025年12月17日
    000
  • C程序:求解停靠站问题

    问题陈述– 一个程序,用于查找火车在 n 个车站中的 r 个车站停靠的方式,以便没有两个停靠站是连续的。 问题解释 该程序将计算火车停靠的方式数,即排列。在这里,火车将从点X行驶到Y。在这些点之间,有n个站点。列车将在这n个车站中的r个车站停靠,条件是在r车站停靠时,列车不应在连续两个车…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信