输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分C语言怎么写
时间: 2023-12-08 16:02:11 浏览: 133
可以使用双指针法,一个指针从数组头部开始向后遍历,另一个指针从数组尾部开始向前遍历,交换两个指针所指的数,直到头指针大于等于尾指针为止。
代码实现如下:
```c
void reorderOddEven(int *nums, int length) {
if (nums == NULL || length <= 0) {
return;
}
int i = 0, j = length - 1;
while (i < j) {
// 当头指针指向偶数,尾指针指向奇数时,交换两个数的位置
while (i < j && (nums[i] & 1) != 0) {
i++;
}
while (i < j && (nums[j] & 1) == 0) {
j--;
}
if (i < j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
```
其中 `&` 表示按位与运算,判断奇偶性。当一个数的二进制数的最后一位是 1 时,该数为奇数;当最后一位是 0 时,该数为偶数。
相关问题
python编程 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分
可以使用双指针法来实现这个函数。一个指针从数组的左边往右移动,另一个指针从数组的右边往左移动,当两个指针都指向奇数和偶数时,交换它们的位置。直到两个指针相遇,就完成了奇偶数分离的工作。
代码如下:
```python
def reorder_array(nums):
if not nums:
return nums
left, right = 0, len(nums) - 1
while left < right:
while left < right and nums[left] % 2 == 1:
left += 1
while left < right and nums[right] % 2 == 0:
right -= 1
if left < right:
nums[left], nums[right] = nums[right], nums[left]
return nums
```
测试代码如下:
```python
print(reorder_array([1, 2, 3, 4, 5, 6, 7, 8, 9])) # [1, 9, 3, 7, 5, 6, 4, 8, 2]
print(reorder_array([2, 4, 6, 1, 3, 5, 7, 9])) # [9, 7, 5, 3, 1, 6, 4, 2]
print(reorder_array([1, 3, 5, 7, 9])) # [1, 3, 5, 7, 9]
print(reorder_array([2, 4, 6, 8, 10])) # [2, 4, 6, 8, 10]
print(reorder_array([])) # []
```
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)。
阅读全文
相关推荐
![md](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)