首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C中将数组拆分为两个数组,一个用于偶数组,一个用于奇数组

在C语言中,可以通过遍历数组的每个元素,将偶数和奇数分别存放到两个不同的数组中。以下是一个示例代码:

代码语言:txt
复制
#include <stdio.h>

void splitArray(int arr[], int size, int evenArr[], int oddArr[]) {
    int evenIndex = 0;
    int oddIndex = 0;

    for (int i = 0; i < size; i++) {
        if (arr[i] % 2 == 0) {
            evenArr[evenIndex++] = arr[i];
        } else {
            oddArr[oddIndex++] = arr[i];
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int size = sizeof(arr) / sizeof(arr[0]);
    int evenArr[size];
    int oddArr[size];

    splitArray(arr, size, evenArr, oddArr);

    printf("Even Array: ");
    for (int i = 0; i < size; i++) {
        if (evenArr[i] != 0) {
            printf("%d ", evenArr[i]);
        }
    }

    printf("\nOdd Array: ");
    for (int i = 0; i < size; i++) {
        if (oddArr[i] != 0) {
            printf("%d ", oddArr[i]);
        }
    }

    return 0;
}

这段代码中,我们定义了一个splitArray函数,该函数接受一个整数数组arr、数组大小size,以及两个用于存放偶数和奇数的数组evenArroddArr。在函数内部,我们使用两个索引evenIndexoddIndex来追踪偶数和奇数数组的下一个可用位置。遍历输入数组arr,如果当前元素是偶数,则将其存放到evenArr中,并递增evenIndex;如果当前元素是奇数,则将其存放到oddArr中,并递增oddIndex

main函数中,我们定义了一个示例数组arr,并计算数组大小。然后,我们创建了两个与输入数组大小相同的空数组evenArroddArr。接下来,调用splitArray函数将arr拆分为偶数数组和奇数数组。最后,我们分别打印出偶数数组和奇数数组的内容。

这个算法的时间复杂度是O(n),其中n是输入数组的大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用于数组中删除第一个元素的 Python 程序

为了删除数组的第一个元素,必须考虑的索引为 0,因为任何数组中第一个元素的索引始终为 0。与从数组中删除最后一个元素一样,从数组中删除第一个元素可以使用相同的技术进行处理。...让我们将这些技术应用于数组的第一个元素的删除。我们现在将讨论用于数组中连续一个一个地删除第一个元素的方法和关键字。...使用 pop() 方法 pop() 方法用于删除 Python 编程语言中数组、列表等的元素。此机制通过使用必须从数组中删除或删除的元素的索引来工作。 因此,要删除数组的第一个元素,请考虑索引 0。...通过使用 pop() 方法,提及数组的第一个索引,即方法括号内的 0 以删除第一个元素。 删除第一个元素后打印数组。...此关键字还用于使用其索引删除数组的最后一个元素或任何元素。因此,我们使用此关键字来删除 Python 中的特定对象或元素。

26930

2023-07-04:给定一个数组A, 把它分成两个数组B和C 对于数组A每个i位置的数来说, A = B + C[

2023-07-04:给定一个数组A, 把它分成两个数组B和C 对于数组A每个i位置的数来说, A[i] = B[i] + C[i] 也就是一个数字分成两份,然后各自进入B和C 要求B[i], C[i...] >= 1 最终B数组要求从左到右不能降序 最终C数组要求从左到右不能升序 比如 A = { 5, 4, 5 } 可以分成 B = { 2, 2, 3 } C = { 3, 2, 2 } 这是一种有效的划分...答案2023-07-04: 大体步骤如下: 算法一: 1.定义一个递归函数 process1,接受一个数组 arr,一个索引 i,前一个增加值 preIncrease 和前一个减少值 preDecrease...5.如果前一个增加值 preIncrease 小于等于当前增加值,并且前一个减少值 preDecrease 大于等于当前减少值,递归调用 process1,并将结果加到 ans 上。...4.从第二个元素开始遍历数组 arr,并根据前一个元素和当前元素之差来减小 k 的值(如果前一个元素大于当前元素)。 5.如果 k 小于等于 0,则返回 0,因为无法以有效方式对数组进行分割。

27210
  • $set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图

    ,修改数组里某一个对象。...最开始我的想法就是将数值一个一个的赋值进数组,和写Java代码一样的思维。...$set来进行操作 解决: // 数组:第一个参数是要修改的数组, 第二个值是修改的下标或字段,第三个是要修改成什么值 this....它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = ‘hello,ningzaichun’) 简单说即是:当你发现你给对象加了一个属性...$set的用法 // 数组:第一个参数是要修改的数组, 第二个值是修改的下标或字段,第三个是要修改成什么值 // 对象:第一个参数是要修改的对象, 第二个值是修改属性字段,第三个是要修改成什么值 Vue.set

    2.5K10

    js中数组的sort()方法排序

    返回一个数组的引用,不会创建新的数组对象而是将原数组改变成排序后的数组。 无参调用: 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,按照字符编码的顺序进行排序。...带参调用: 如果想要自己规定排序方式,就需要在sort()方法中提供一个比较函数,该函数要比较两个值即有两个形参a 和 b,函数执行时浏览器会将数组中的元素依次作为实参传入,返回一个用于说明这两个值的相对顺序的数字...sort()方法会根据函数返回值来进行数组元素的交换。返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。...下面的函数可以将元素按先排序: 要将元素按照先的顺序排列,则a b交换的条件为a是偶数b是奇数且a>b。有了排序的条件,就可以很容易写出比较函数。...() var arr = ["a","A","B","C","b"]; function

    6.4K20

    Java基础:Java数据类型

    与此相反,CC++ 程序需要针对不同的处理器选择最为高效的整型,这样就有可能造成一个在 32 位处理器上运行很好的 C 程序在 16 位系统上运行却发生整数溢出。...长整型数值有一个后缀 L 或 l(4000000000L)。十六进制数值有一个前缀 0x 或 0X( 0xCAFE)。八进制有一个前缀 0,例如,010 对应八进制中的 8。...相反地,当将一个 Integer 对象赋给一个 int 值时,将会自动地箱。...甚至在算术表达式中也能够自动地装箱和箱。例如,可以将自增操作符应用于一个包装器引用。 大多数情况下,容易有一种假象,即基本类型与它们的对象包装器是一样的,只是它们的相等性不同。...Arrays.equals(ints[0],ints[1])) 比较两个数组的元素是否相等 3、多维数组 多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。

    1.3K50

    高级数据结构:带边权并查集&拓展域

    银河英雄传说 题面 有一个分为N列的星际战场,各列依次编号为1,2,…,N。 有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列。...接下来T行,每行一个指令,指令有两种形式:M i j或C i j。 其中M和C为大写字母表示指令类型,i和j为整数,表示指令涉及的战舰编号。...另外就是如何在合并的时候维护d数组,需要一个siz数组表示某个节点下面有几艘战舰,具体画个图结合代码就可以明白了。...分析 还是用x代表L-1,y代表R,x和y都有两种状态:,用x代表x为奇数的情况,x+n代表x为偶数的情况,y表示y为奇数的情况,y+n表示y为偶数的情况。...合并前要判断,x和y+n是否属于一个集合,如果属于一个集合说明x和y是异类,矛盾了。 x和y异类,也是两种可能:x为,y为,或者x为y为,故合并x,y+n以及x+n,y,表示这些属于一个集合。

    1.2K20

    调整数组顺序使奇数位于偶数前面

    题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。...1 3 5 6 4 2 ↑ 移动后 继续扫描当前位置数5,6,至此,偶数有2两个,当前指向位置为,所在下标为4,总数 - 位置 <= 偶数 ,结束。...1 3 5 6 4 2 ↑ 根据该思路,C语言代码实现如下: //reorder.c #include #include #include <time.h...快速排序中,有一个分区操作,是将整个数组大于基准的部分,放右边,而小于基准的部分放右边,即根据基准,将数组分为二。其实在这里,同样可以参考这个思路,只不过跟基准比大小,变成了判断是还是。...扩展 在本题中,只是对整数是还是进行分开,那么如果是别的条件呢?例如是否为素数,是否为正数等等。我们可以让调用者传入一个条件函数,让它决定到底是放在后半部分,还是前半部分。

    89110

    C#的数据类型

    概述C#的数据类型可以分为两大类:值类型(Value Types)和引用类型(Reference Types)。值类型存储数据的实际值,而引用类型存储数据的内存地址。...值类型2.1 基本数据类型C#提供了一组基本数据类型,用于存储整数、浮点数、字符等。...3.3 数组数组是一种引用类型,用于存储固定大小的相同类型的元素集合。3.4 委托(Delegates)委托是一种特殊的引用类型,用于封装方法的引用。4....装箱和C#中的装箱(Boxing)和箱(Unboxing)是值类型和引用类型之间转换的过程。装箱:将值类型转换为引用类型的过程。箱:将引用类型转换回值类型的过程。6....实例:数据类型在实际编程中的应用让我们通过一个简单的例子来展示如何在实际编程中选择合适的数据类型。

    78910

    分享近百道JavaScript 基础面试题,帮助你巩固JavaScript 基础知识

    reduce() 方法对累加器和数组中的每个元素应用一个函数,产生单个值。 36. 如何在 JavaScript 中深度复制一个对象?...find() 方法返回数组中满足提供的测试函数的第一个元素。 38. 如何在 JavaScript 中反转字符串?...如何在 JavaScript 中将字符串转换为整数? 你可以使用 parseInt() 或 Number() 函数将字符串转换为整数。 57....concat() 方法用于合并两个或多个数组,创建一个包含连接元素的新数组。 69. 如何在 JavaScript 中对数组进行排序? 可以使用 sort() 方法按字母顺序或数字顺序对数组进行排序。...如何在 JavaScript 中将字符串转换为日期对象? 可以使用 Date() 构造函数或 new Date() 方法将字符串转换为日期对象。 72.

    29110

    调整数组元素顺序

    前言 有一个整数数组,我们想按照特定规则对数组中的元素进行排序,比如:数组中的所有奇数位于数组的前半部分。 本文将带大家实现这个算法,欢迎各位感兴趣的开发者阅读本文。...因此,我们可以维护两个指针: 第一个指针初始化时指向数组的第一个数字,它只向后移动; 第二个指针初始化时指向数组的最后一个数字,它只向前移动; 在两个指针相遇之前,第一个指针总是位于第二个指针的前面。...如果第一个指针指向的数字是偶数,并且第二个指针指向的数字是奇数,则交换这两个数字。...arr[this.begin]]; } } // 重置指针位置 this.begin = 0; this.end = 0; } } 代码的可扩展性 如果数组中的元素不按照后排列...这样回答没有问题,确实解决了这个问题,那么如果再改改题目,我们需要把数组中的元素分为两部分,能被3整除的数都在不能被3整除的数前面,应该怎么做?

    84910

    21个单行代码技巧,不单单只是炫技!

    3, } //老的取值方式 const a = obj.a; const b = obj.b; const c = obj.c; 老的取值方式,直接用对象名加属性名去取值。...如果使用ES6的解构赋值一行就能搞定 const {a,b,c} = obj; 获取对象属性值 在编程的过程中经常会遇到获取一个值并赋给另一个变量的情况,在获取这个值时需要先判断一下这个对象是否存在,...().toString(36).slice(2); //函数调用 randomString(); 数组去重 用于移除数组中的重复项 const unique = (arr) => [...new Set...const a = [1,2,3]; const b = [1,5,6]; const c = [...new Set([...a,...b])];//[1,2,3,5,6] 判断数组是否为空 判断一个数组是否为空数组...交换两个变量 //旧写法 let a=1; let b=2; let temp; temp=a a=b b=temp //新写法 [a, b] = [b, a]; 判断还是 const isEven

    31030

    寻找两个正序数组的中位数

    在统计中,中位数被用来: 将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。...这其中又分为数组和奇数组: 奇数组: [2 3 5] 对应的中位数为3 偶数组: [1 4 7 9] 对应的中位数为 (4 + 7) /2 = 5.5 先解释下“割” 我们通过切一刀,能够把有序数组分成左右两个部分...割可以割在两个数中间,也可以割在1个数上,如果割在一个数上,那么这个数即属于左边,也属于右边 奇数组: [2 3 5] 对应的中位数为3,假定割(Cut)在3上,我们可以把3分为2个: [2 (3/3)...,我们要求得两个数组合并成一个有序数组时,第k位的元素 我们设: Ci为第i个数组的割。...,m+n总数可能为, 也可能为,所以我们得想法让m+n总是为偶数 通过虚拟加入‘#’,我们让m转换成2m+1 ,n转换成2n+1, 两数之和就变成了2m+2n+2,恒为偶数。

    24010

    【愚公系列】2023年11月 数据结构(三)-列表

    堆(Heap):是一种特殊的树结构,它通常用于实现优先队列和堆排序等算法。堆分为最大堆和最小堆,最大堆的每个节点的值都大于等于其子节点的值,最小堆则相反。...该方法接受一个参数,即一个委托,用于比较两个元素的大小关系。...列表的优点和缺点如下:优点:灵活性:列表可以动态添加和删除元素,适用于需要频繁修改元素的场景。可附加的元信息:列表中的元素可以携带附加信息,元素的唯一标识符、元素的创建时间等,便于后续对元素的处理。...在不清楚数组长度的时候、就很尴尬了。 所以C#提供了ArrayList了来处理这些问题...2.ArrayList使用大小会根据需要动态增加的数组。...这样就避免了类型的不安全、以及数据强制转换导致装箱箱损耗性能。备注:哈希表(散列),就是数组的升级版通过hash运算快速查找到值,数组下标就是哈希值。

    23500

    【刷题】Leetcode 1609.奇偶树

    利用深度优先算法可以产生目标图的对应拓扑排序表,进而方便的解决问题(最大路径算法)。 其过程简单来说是对一个可能分支进行处理到不能再进行处理为止。...具体分为两个循环嵌套: 首先外围while 保证访问所有节点,并记录深度。 内层for循环 负责处理该层所有节点,并将下一层节点存入队列中。...每层处理结束后 level++ 这两个循环是算法的核心部分, 保证了遍历所有节点....qu.empty()){ //prev 为前一个节点值 这里进行初始化 //偶数下标 层上的所有节点的值都是 整数,从左到右按顺序严格递增 //所以...//设置常量 方便使用 const int N = 1e5 + 7; const int MAX = 0x3f3f3f3f; class Solution { public: // dp[]数组储存上一个符合要求的值

    9810

    【Java】什么是泛型?什么是包装类

    包装类 基本类型对应的包装类 Java是一个面向对象的编程语言,但其基本数据类型(int、char、boolean等)并不直接支持面向对象的特性。...装箱和箱 装箱(Boxing)和箱(Unboxing)是Java语言中关于基本数据类型(primitive types)和它们对应的包装类(wrapper classes)之间转换的两个重要概念。...都是返回 IntegerCache.cache[100-(-128)] = IntegerCache.cache[228],故 a == b 为 true 而200不在范围内,所以 c 和 d 均随机实例化两个不同的对象...,会占用内存中不同的位置,一定不会相等,故 c == d 为 false 泛型 属于一个语法 简单来说就是适用于许多类型 主要功能是把类型参数化,意味着可以传指定的类型参数 为什么要有泛型 举例: 实现一个类...,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中控某个下标的值 实现这个类,我们先定义一个 Object[] 数组,Object 使得这个数组可以放下任何类型的数据

    7910
    领券