数组奇偶排序(数组) 题目描述 输入n,输入n个整数。调整数字位置使得偶数在序列的前半部分,奇数在序列的后半部分。 注:自己根据样例输入、输出找到算法。 要求算法的时间复杂度为O(n)。用c语言解决
时间: 2024-03-12 17:44:49 浏览: 78
调整数组顺序使得奇数在偶数前面1
可以使用双指针的方法,一个指针从序列的开头向后遍历,另一个指针从序列的末尾向前遍历。当左指针遇到奇数,右指针遇到偶数时,交换两个指针所指的数字。直到左指针和右指针相遇。
以下是 C 语言的示例代码:
```c
#include <stdio.h>
int main() {
int n, nums[1000];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
int left = 0, right = n - 1;
while (left < right) {
if (nums[left] % 2 == 0) {
left++;
} else if (nums[right] % 2 == 1) {
right--;
} else {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
时间复杂度为 O(n),因为只需要遍历一次序列。
阅读全文