如何设计一个程序,以便将包含20个整数的列表中的偶数排在前面,奇数排在后面,同时保持元素的原始顺序不变?
时间: 2024-11-27 19:09:49 浏览: 9
为了设计一个程序来满足这个需求,你可以采用以下步骤,假设我们正在使用Python语言:
1. 首先,创建一个空的新列表,用于存储排序后的结果。
2. 使用列表推导式遍历原列表,对每个元素进行判断。如果元素是偶数,则直接添加到新列表的前面;如果元素是奇数,则添加到新列表的后面。由于Python支持原地保留元组的第一个元素(即奇数),可以利用这一点。
3. 为了保持元素的原始顺序,需要在处理奇数时,将其插入到已排序偶数的适当位置。这可以通过找到前一个偶数的位置来完成,因为已经保证了偶数按升序排列。
以下是具体的代码实现:
```python
def sort_even_odd(input_list):
even_list = [x for x in input_list if x % 2 == 0]
odd_positions = {x: index for index, x in enumerate(even_list)} # 创建一个映射记录偶数的位置
result = []
for num in input_list:
if num % 2 == 0:
result.append(num) # 偶数直接添加
else:
insert_index = odd_positions[num] # 获取奇数对应的偶数位置
result.insert(insert_index, num) # 插入到对应位置
return result
# 示例:
original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sorted_list = sort_even_odd(original_list)
print(sorted_list)
```
运行此程序,你会得到一个偶数在前、奇数在后的列表,同时保持了元素的原始顺序。
阅读全文