编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变。
时间: 2023-04-22 14:03:34 浏览: 48
可以使用两个指针,一个指向列表的开头,一个指向列表的结尾。遍历列表,如果指向开头的指针指向的数是奇数,则将其加入新列表的开头,并将指针向后移动一位;如果指向结尾的指针指向的数是偶数,则将其加入新列表的结尾,并将指针向前移动一位;否则,将指针向前或向后移动一位。直到两个指针相遇为止。最后得到的新列表就是符合要求的列表。
具体实现可以参考以下代码:
```python
def sort_list(lst):
new_lst = []
left, right = , len(lst) - 1
while left <= right:
if lst[left] % 2 == 1:
new_lst.insert(, lst[left])
left += 1
elif lst[right] % 2 == :
new_lst.append(lst[right])
right -= 1
else:
left += 1
right -= 1
return new_lst
```
例如,输入列表 `[1, 2, 3, 4, 5, 6, 7, 8, 9]`,输出新列表 `[1, 3, 5, 7, 9, 8, 6, 4, 2]`。
相关问题
Python编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
可以使用双指针法,一个指针从前往后找偶数,一个指针从后往前找奇数,然后交换它们的位置。代码如下:
```
def odd_even_list(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
nums[left], nums[right] = nums[right], nums[left]
return nums
```
这个函数接受一个整数列表作为参数,返回一个新的列表,其中奇数在前偶数在后,且奇数之间相对顺序不变,偶数之间的相对顺序也不变。
2. 编写程序,输入一个包含若干整数的列表,输出一个新列表,新列表中奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变。
可以使用双指针的方法,一个指针从前往后扫描奇数,另一个指针从后往前扫描偶数,当两个指针相遇时,即完成了列表的重新排列。
具体实现如下:
1. 定义两个指针 i 和 j,分别指向列表的头和尾。
2. 循环遍历列表,当 i < j 时执行以下操作:
a. 如果 nums[i] 是偶数,nums[j] 是奇数,则交换两个数的位置。
b. 如果 nums[i] 是奇数,则 i++。
c. 如果 nums[j] 是偶数,则 j--。
3. 循环结束后,列表就被重新排列了,奇数在前偶数在后,并且奇数之间的相对顺序不变,偶数之间的相对顺序也不变。
代码实现如下:
def reorder(nums):
i, j = 0, len(nums) - 1
while i < j:
if nums[i] % 2 == 0 and nums[j] % 2 == 1:
nums[i], nums[j] = nums[j], nums[i]
i += 1
j -= 1
elif nums[i] % 2 == 1:
i += 1
elif nums[j] % 2 == 0:
j -= 1
return nums
示例:
输入:[1, 2, 3, 4, 5, 6, 7, 8, 9]
输出:[1, 3, 5, 7, 9, 2, 4, 6, 8]
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.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)
![](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)