一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。 输入描述: 第一行输入整数n。 第二行输入n个整数。 输出描述: 输出排序后的n个整数。 输入样例: 4 2 3 1 23 输出样例: 3 1 23 2
时间: 2024-03-01 22:52:27 浏览: 162
好的,这是一道很基础的算法题,我会帮你解答。这里给出一种简单的思路:
1. 定义一个新数组,将奇数和偶数分别存入该数组的前半部分和后半部分。
2. 遍历原数组,将奇数存入新数组的前半部分,偶数存入新数组的后半部分。
3. 输出新数组即可。
下面是 Python 代码实现:
```python
n = int(input().strip())
array = list(map(int, input().strip().split()))
# 定义新数组
new_array = [0 for _ in range(n)]
# 遍历原数组,将奇数和偶数分别存入新数组的前半部分和后半部分
index_odd = 0
index_even = n - 1
for num in array:
if num % 2 == 1:
new_array[index_odd] = num
index_odd += 1
else:
new_array[index_even] = num
index_even -= 1
# 输出新数组
print(' '.join(map(str, new_array)))
```
希望能够帮助到你!
相关问题
一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。(测试用例仅做参考,我们会根据代码质量进行评分) 输入描述: 第一行输入整数n。 第二行输入n个整数。 输出描述: 输出排序后的n个整数。 输入样例: 4 2 3 1 23 输出样例: 3 1 23 2 js代码实现
好的,下面是 JavaScript 代码实现:
```javascript
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function(line){
// 获取输入
const nums = line.split(' ').map(Number);
const n = nums[0];
const array = nums.slice(1);
// 定义新数组
const newArray = new Array(n).fill(0);
// 遍历原数组,将奇数和偶数分别存入新数组的前半部分和后半部分
let indexOdd = 0;
let indexEven = n - 1;
for (let i = 0; i < n; i++) {
const num = array[i];
if (num % 2 === 1) {
newArray[indexOdd] = num;
indexOdd++;
} else {
newArray[indexEven] = num;
indexEven--;
}
}
// 输出新数组
console.log(newArray.join(' '));
});
```
这里使用了 Node.js 的 readline 模块来获取输入。希望能够帮助到你!
42. 调整数组顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不
变。这个问题可以使用双指针法来解决。我们可以定义两个指针,一个指向数组的开头,一个指向数组的结尾。然后分别向中间移动,当左指针指向的数为偶数,右指针指向的数为奇数时,交换两个数字的位置。重复这个过程,直到左指针和右指针相遇为止。以下是一个示例代码:
```
void reorderArray(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
while (left < right) {
while (left < right && nums[left] % 2 == 1) left++;
while (left < right && nums[right] % 2 == 0) right--;
if (left < right) swap(nums[left], nums[right]);
}
}
```
这个算法的时间复杂度是 O(n),空间复杂度是 O(1)。
阅读全文