一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。 输入描述: 第一行输入整数n。 第二行输入n个整数。 输出描述: 输出排序后的n个整数。 写出处理代码
时间: 2023-02-09 19:14:27 浏览: 91
在这里给出一种 Python 的解决方案:
```
n = int(input())
nums = list(map(int, input().split()))
# 将奇数放在偶数前面
nums.sort(key=lambda x: x % 2)
# 输出排序后的数组
print(nums)
```
这段代码首先读取了输入的 n,然后使用 `input().split()` 将输入的 n 个整数分割为列表。接着使用 `sort()` 方法将列表排序,使用 `lambda x: x % 2` 作为关键字,这样奇数就会排在偶数前面。最后,输出排序后的数组。
相关问题
用c++写一个代码:题目描述 一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。(测试用例仅做参考,我们会根据代码质量进行评分) 输入描述: 第一行输入整数n。 第二行输入n个整数。 输出描述: 输出排序后的n个整数。
Sure! 这是一个用C++编写的解决方案,可以将奇数放在偶数面。
```cpp
#include <iostream>
#include <>
using namespace std;
void ReorderArray(vector>& nums) {
int left = 0, = nums.size() - 1;
while (left < right) {
while (left < right && (nums[left] % 2) != 0) {
left++;
}
while (left < right && (nums[right] % 2) == 0) {
right--;
}
if (left < right) {
swap(nums[left], nums[right]);
}
}
}
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
ReorderArray(nums);
for (int i = 0; i < n; i++) {
cout << nums[i] << " ";
}
return 0;
}
```
这段代码首先定义了一个 `ReorderArray` 函数,它使用双指针方法将奇数放在偶数前面。然后在 `main` 函数中,我们首先读取输入的整数 `n`,然后读取 `n` 个整数作为数组元素。调用 `ReorderArray` 函数后,输出排序后的数组。
希望这个代码对你有帮助!如果有任何疑问,请随时提出。
c语言用指针实现输入n个整数存放在一维数组中,请将所有的奇数调整到偶数的前面存放
好的,这是一道关于C语言的数组操作问题。我们可以通过两个指针,分别指向数组的首尾位置,然后向中间靠拢,将奇数放到前面,偶数放到后面。
具体操作如下:
1. 定义指针left和right,分别指向数组的首尾位置。
2. 循环操作,当left小于right时:
3. left向右移动,直到遇到一个偶数,或者到达数组末尾。
4. right向左移动,直到遇到一个奇数,或者到达数组开头。
5. 如果left小于right,交换left和right位置的元素。
6. 重复步骤2-5,直到left等于right。
代码示例如下:
```
void adjust(int *arr, int n) {
int *left = arr, *right = arr + n - 1;
while (left < right) {
while (left < right && *left % 2 == 1) left++;
while (left < right && *right % 2 == 0) right--;
if (left < right) {
int temp = *left;
*left = *right;
*right = temp;
}
}
}
```
使用示例:
```
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
adjust(arr, 8);
for (int i = 0; i < 8; i++) {
printf("%d ", arr[i]);
}
```
输出结果为:
```
7 5 3 1 2 4 6 8
```