定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。定义一个函数,实现将数组元素奇数在左,偶数在右的排列。在上述定义的函数中,不允许再增加新的数组。从主函数中分别调用上述函数,打印输出结果。
时间: 2024-02-27 20:58:49 浏览: 71
用C语言实现数组元素最大值/最小值查找、数组元素平均值计算、数组元素排序等功能
好的,这是一个比较常见的数组问题,下面给出解决方案。
首先,我们可以定义两个指针,一个指向数组的开始位置,一个指向数组的结束位置。然后,我们分别从前往后找到第一个偶数和从后往前找到第一个奇数,交换它们的位置,直到两个指针相遇。这样,就能够将数组中的奇数和偶数分别排列在左右两侧。
代码如下:
```c++
void oddEvenSort(int arr[], int len) {
int left = 0, right = len - 1;
while (left < right) {
while (left < right && arr[left] % 2 != 0) left++;
while (left < right && arr[right] % 2 == 0) right--;
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
}
```
在主函数中调用该函数,如下所示:
```c++
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int len = sizeof(arr) / sizeof(arr[0]);
oddEvenSort(arr, len);
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
1 9 3 7 5 6 4 2 8
```
可以看到,数组中的奇数都排在了左侧,偶数排在了右侧。
阅读全文