编写一个程序,需数组中有奇偶,奇数在前偶数在后,且奇数和偶数按升序打印出
时间: 2023-06-19 08:06:11 浏览: 115
php实现数组筛选奇数和偶数示例
可以使用双指针法,一个指向数组的开头,一个指向数组的结尾。当左指针指向的元素为奇数,右指针指向的元素为偶数时,交换两个指针指向的元素。最终左指针指向的位置为奇数序列的最后一个元素的位置,右指针指向的位置为偶数序列的第一个元素的位置。然后对奇数序列和偶数序列分别进行升序排序,最后将它们合并起来。
以下是示例代码:
```python
def sort_odd_even(nums):
left, right = 0, len(nums) - 1
while left < right:
if nums[left] % 2 == 0 and nums[right] % 2 == 1:
nums[left], nums[right] = nums[right], nums[left]
if nums[left] % 2 == 1:
left += 1
if nums[right] % 2 == 0:
right -= 1
odd_nums = sorted(nums[:left])
even_nums = sorted(nums[left:])
return odd_nums + even_nums
```
使用示例:
```python
>>> nums = [2, 1, 4, 3, 6, 5]
>>> sort_odd_even(nums)
[1, 3, 5, 2, 4, 6]
```
阅读全文