c语言实现调整输入数组A[0..n],将其分为两部分,左边所有元素为奇数,右边所有元素为偶数
时间: 2024-09-07 15:04:16 浏览: 116
C语言之一维数组(第2讲).docx
在 C 语言中,实现这个功能可以使用两个指针,一个从数组的开始位置 (A[0]) 开始,另一个从末尾 (A[n-1]) 向前移动。遍历过程中,当遇到奇数时,我们将其与当前右侧偶数区间的最后一个元素交换;遇到偶数时,不做任何操作。这样,最后左侧将是奇数序列,右侧则是偶数序列。
以下是简单的伪代码描述:
```c
void separate_array(int A[], int n) {
int left = 0, right = n - 1;
while (left < right) {
// 如果左指针处是奇数
if (A[left] % 2 != 0) {
// 与右指针处的偶数交换
if (right >= left + 1 && A[right] % 2 == 0) {
int temp = A[left];
A[left] = A[right];
A[right] = temp;
right--;
} else {
left++;
}
} else { // 左指针处是偶数
left++; // 继续向右查找奇数
}
}
}
```
阅读全文