重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i]

重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i]= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j

我们得到一个包含奇数和偶数整数值的整数数组。任务是重新排列数组,使 arr[i] 大于或等于 arr[j],条件是索引 arr[i] 处的值应该为偶数,并且如果 arr[i] 处的值是奇数,那么 arr[i] 应该

小于等于arr[j]。

让我们看看这个的各种输入输出情况−

输入 − int arr[] = {5, 9, 10, 12, 32, 35, 67, 89}

输出 − 重新排列元素后的数组为:12 32 10 35 9 67 5 89

解释 − 我们给定了一个包含奇数和偶数整数的数组。现在,我们将从arr[i]位置开始遍历,对比arr[j]位置,并检查如果arr[i]是偶数,则确保arr[i]大于arr[j],如果arr[i]是奇数,则确保arr[i]小于等于arr[j]。

输入 − int arr[] = {4, 5, 1, 2, 9, 10}

输出 − 重新排列元素后的数组为:4 5 2 9 1 10

解释 − 我们给定了一个包含奇数和偶数整数的数组。现在,我们将从arr[i]位置开始遍历,对比arr[j]位置,并检查如果arr[i]是偶数,则确保arr[i]大于arr[j],如果arr[i]是奇数,则确保arr[i]小于等于arr[j]。

下面程序中使用的方法如下

声明一个整数类型的数组。计算数组的大小,size = sizeof(arr) / sizeof(arr[0])。

调用一个名为array_rearrange(arr, size)的函数,并将数据作为参数传递。

声明一个变量even,并将其设置为even = size / 2,再声明另一个变量odd,并将其设置为size – even。

声明一个变量temp,并将其设置为odd – 1。声明一个大小为arr_1[]的数组arr_2[]。

开始循环,从i为0,i小于size。在循环内,将arr_2[i]设置为arr[i]。

调用一个名为sort(arr_2, arr_2 + size)的函数。

开始循环,从i为0,i小于size。在循环内,将arr[i]设置为arr_2[temp],并将变量temp减1。

将temp设置为odd。开始循环,从i为1,i小于size。在循环内,将arr[i]设置为arr_2[temp],并将temp增加1。

开始循环,从i为0,i小于size。打印arr[i]。

示例

#include using namespace std;void array_rearrange(int arr[], int size){   int even = size / 2;   int odd = size - even;   int temp = odd - 1;   int arr_2[size];   for(int i = 0; i < size; i++){      arr_2[i] = arr[i];   }   sort(arr_2, arr_2 + size);   for(int i = 0; i < size; i += 2){      arr[i] = arr_2[temp];      temp--;   }   temp = odd;   for(int i = 1; i < size; i += 2){      arr[i] = arr_2[temp];      temp++;   }   cout<<"Array after rearranging elements are: ";   for (int i = 0; i < size; i++){      cout << arr[i] << " ";   }}int main(){   int arr[] = {5, 9, 10, 12, 32, 35, 67, 89};   int size = sizeof(arr) / sizeof(arr[0]);   array_rearrange(arr, size);   return 0;}

输出

如果我们运行上面的代码,它将生成以下输出

Array after rearranging elements are: 12 32 10 35 9 67 5 89

以上就是重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] 的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:52:31
下一篇 2025年12月13日 18:44:02

相关推荐

  • 在C和C++中,逗号(comma)的用法是用来分隔表达式或语句

    在 C 或 C++ 中,逗号“,”有不同的用途。在这里我们将了解如何使用它们。 逗号作为运算符。 逗号运算符是一个二元运算符,它计算第一个操作数,然后丢弃结果,然后计算第二个操作数并返回值。逗号运算符在 C 或 C++ 中的优先级最低。 示例 #includeint main() { int x =…

    2025年12月17日
    000
  • 如何在C语言中将整个数组作为参数传递给函数?

    数组 数组是一组具有相同名称的相关项。以下是将数组作为参数传递给函数的两种方式: 将整个数组作为参数传递给函数将单个元素作为参数传递给函数 将整个数组作为参数传递给函数 要将整个数组作为参数传递,只需在函数调用中发送数组名称。 要接收一个数组,必须在函数头中声明。 示例1 #includemain …

    2025年12月17日
    000
  • 使用C++编写,在矩阵中找到给定和的一对数字

    在本文中,我们将讨论在给定矩阵中查找具有给定和的对的程序。例如 – Input : matrix[n][m] = { { 4, 6, 4, 65 }, { 56, 1, 12, 32 }, { 4, 5, 6, 44 }, { 13, 9, 11, 25 } }, SUM = 20Out…

    2025年12月17日
    000
  • 检查一个二进制字符串是否可以通过删除非相邻字符来按降序排序

    在这个问题中,我们需要通过仅删除不相邻的元素来按降序对给定的二进制字符串进行排序。 为了解决这个问题,我们需要删除二进制字符串中所有位于 1 之前的 0。如果我们在字符串中的任何位置发现两个连续的零后面有两个连续的1,则意味着我们无法对字符串进行降序排序。否则,我们可以针对每种情况进行分类。 问题陈…

    2025年12月17日
    000
  • 计算两点之间距离的C程序

    给定两点坐标,任务是找到两点之间的距离并显示结果。 在二维平面中有两个点,假设 A 和 B 具有各自的坐标作为 (x1, y1) 和 (x2, y2) 并计算它们之间的距离,有一个直接公式,如下所示 $$sqrt{lgroup x2-x1rgroup^{2 }+lgroup y2-y1rgroup^…

    2025年12月17日
    000
  • C++程序初始化字典

    C++在同名的字典方面与Python不同,但它具有相似功能的相同数据结构。C++支持映射,可在STL类std::map中使用。映射对象在每个条目中包含一对值,一个是键值,另一个是映射值。键值用于在映射中搜索和唯一标识条目。而映射值不一定是唯一的,键值在映射中必须始终是唯一的。让我们看一下如何使用映射…

    2025年12月17日
    000
  • 根据给定条件,从数组中构建一个长度为K的二进制字符串

    在本教程中,我们需要构造一个长度为 K 的二进制字符串,如果使用数组元素可以实现等于 I 的子集和,则它的第 i 个索引处应包含“1”。我们将学习两种解决问题的方法。在第一种方法中,我们将使用动态规划方法来检查子集和等于索引“I”是否可能。在第二种方法中,我们将使用位集通过数组元素查找所有可能的和。…

    2025年12月17日
    000
  • 在C语言中,trunc()表示截断函数,truncf()表示截断函数(单精度),truncl()表示截断函数(长双精度)

    这里我们将看到三个函数。这些函数是 trunc()、truncf() 和 truncl()。这些函数用于将浮点值转换为截断形式。 trunc() 函数 该函数用于截断 double 类型值。并且只返回整数部分。语法如下。 double trunc(double argument) 示例 #inclu…

    2025年12月17日
    000
  • 使用C++移除包含+和-运算符的代数字符串中的括号

    给定一个像 p-(q-r)-s 这样的代数字符串,我们需要删除括号并将该字符串转换为具有相同数学结果的字符串。因此,字符串 p-(q-r)-s 被转换为 p-q+r-s,给出了相同的数学结果。为了实现这一点,我们可以使用堆栈并跟踪是否应该翻转括号表达式中即将出现的符号。 0 表示 + 或无翻转 1 …

    2025年12月17日
    000
  • C程序中的阶乘程序

    Given with the number n the task is to calculate the factorial of a number. Factorial of a number is calculated by multiplying the number with its sma…

    2025年12月17日
    000
  • 斯马兰达切-韦林序列

    这个问题包括打印前m个Smarandache-Wellin序列的项,其中m是任意正整数。我们将在C++中看到打印Smarandache-Wellin序列的前m项的算法。但在此之前,我们必须了解Smarandache-Wellin序列。 一个Smarandache-Wellin序列是由Smaranda…

    2025年12月17日
    000
  • 前n个自然数的平方和的和

    前 n 个自然数的平方和是求最多 n 项的平方和。本系列求 n 以内每个数字的和,并将该和添加到 sum 变量中。 前 4 个自然数的平方和之和为 – sum = ( 12) + (12 + 22 ) + (12 + 22 + 32) + (12 + 22 + 32 + 4 2 ) = …

    2025年12月17日
    000
  • 一个嵌套循环的谜题?

    在本节中,我们将看到一个有趣的问题。我们将看到两个代码段。两者都有两个嵌套循环。我们需要确定哪个会运行得更快。(我们将假设编译器不会对代码进行优化)。 代码段1 for(int i = 0; i < 10; i++){ for(int j = 0; j<100; j++){ //code…

    2025年12月17日
    000
  • C++程序,用于计算参与者在电影节上能完整观看多少部电影

    假设有一个电影节,展示来自不同国家的各种电影。现在,一个参与者想要参加尽可能多的不重叠的电影,我们需要帮助他们找出他们可以参加多少部电影。 有一个结构体 Movie,它有以下成员: 电影的开始时间。电影的持续时间。电影的结束时间。 还有一个结构体 Festival,它有以下成员: 电影节的电影数量。…

    2025年12月17日
    000
  • 在C程序中,打印只包含数字0和1的数,使它们的和为N

    给定一个整数n,任务是打印仅由0和1组成的数字,并且它们的总和等于整数n。 仅包含0和1的数字是1、10 , 11 所以我们必须打印所有可以相加得到等于 n 的数字。 就像,我们输入 n = 31 那么答案可以是 10+10+11 或 10+10 +10+1 示例 Input: 31Output:1…

    2025年12月17日
    000
  • 在C++中,找到数组中可能移动后左指针的索引

    在这个问题中,我们给出了一个大小为N的数组arr[]。我们的任务是在数组中可能的移动后找到左指针的索引。 我们有两个指针,一个是左指针,另一个是右指针。 左指针从索引0开始,值递增。 右指针从索引(n-1)开始,值递减。 立即学习“C++免费学习笔记(深入)”; 如果左指针的和小于右指针的和,则指针…

    2025年12月17日
    000
  • 写一个C程序,使用strncmp库函数来比较两个字符串

    strncmp是一个预定义的库函数,存在于string.h文件中,它用于比较两个字符串并显示哪个字符串更大。 strcmp函数(字符串比较) 此函数比较两个字符串。它返回两个字符串中第一个不匹配字符的ASCII差异。 语法 int strcmp (string1, string2); 如果差异等于零…

    2025年12月17日
    000
  • C中的空指针

    C 中的 void 指针是不与任何数据类型关联的指针。它指向存储中的某个数据位置,意味着指向变量的地址。它也称为通用指针。在 C 语言中,malloc() 和 calloc() 函数返回 void * 或通用指针。 它有一些限制 – 1) 由于 void 指针的原因,指针运算不可能使用 …

    2025年12月17日
    000
  • C程序用于判断给定的数字是否为强数

    一个强数是一个数字,其中各位数字的阶乘之和等于该数字本身。 示例 123!= 1!+2!+3!                    =1+2+6 =9 在这个例子中,123不是一个强数,因为各位数字的阶乘之和不等于该数字本身。 145!=1!+4!+5!             =1+24+120…

    2025年12月17日
    000
  • 你将如何展示C变量的内存表示?

    这里我们将看到如何打印 C 变量的内存表示。这里我们将显示整数、浮点数和指针。 要解决这个问题,我们必须遵循以下步骤 – 获取地址和变量的大小将地址类型转换为字符指针以获取字节地址现在循环获取变量的大小并打印类型转换的指针的值。 示例 #include typedef unsigned …

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信