在C语言中,可以通过遍历数组的每个元素,将偶数和奇数分别存放到两个不同的数组中。以下是一个示例代码:
#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
,以及两个用于存放偶数和奇数的数组evenArr
和oddArr
。在函数内部,我们使用两个索引evenIndex
和oddIndex
来追踪偶数和奇数数组的下一个可用位置。遍历输入数组arr
,如果当前元素是偶数,则将其存放到evenArr
中,并递增evenIndex
;如果当前元素是奇数,则将其存放到oddArr
中,并递增oddIndex
。
在main
函数中,我们定义了一个示例数组arr
,并计算数组大小。然后,我们创建了两个与输入数组大小相同的空数组evenArr
和oddArr
。接下来,调用splitArray
函数将arr
拆分为偶数数组和奇数数组。最后,我们分别打印出偶数数组和奇数数组的内容。
这个算法的时间复杂度是O(n),其中n是输入数组的大小。
领取专属 10元无门槛券
手把手带您无忧上云