用 Python 编写程序,分别按升序和降序对所有偶数和奇数进行排序

pythonserver side programmingprogramming更新于 2026/1/11 3:24:17

假设我们有一个名为 nums 的数字列表,我们必须按照以下标准对数组进行排序

  • 偶数按升序排序
  • 奇数按降序排序
  • 偶数和奇数的相对位置不应改变。

因此,如果输入为 [9, 14, 12, 91, -4, 5],则输出为 [91, -4, 12, 9, 14, 5]

为了解决这个问题,我们将遵循以下步骤 −

  • evens := nums 数组中的偶数项列表
  • odds := 奇数项列表在 nums 数组中
  • 对列表 evens 进行排序
  • even_i := 0, odd_i := 0
  • 对于范围从 0 到 nums 大小的索引,执行
    • 如果 nums[index] mod 2 与 0 相同,则
      • nums[index] := evens[even_i]
      • even_i := even_i + 1
    • 否则,
      • nums[index] := odds[odd_i]
      • odd_i := odd_i + 1
  • 返回 nums

让我们看看下面的实现以便更好地理解 −

示例

class Solution:
   def solve(self, nums):
      evens = [num for num in nums if num % 2 == 0]
      odds = [num for num in nums if num % 2 != 0]
      evens.sort()
      odds.sort(reverse=True)
      even_i = 0
      odd_i = 0
      for index in range(len(nums)):
         if nums[index] % 2 == 0:
            nums[index] = evens[even_i]
            even_i += 1
         else:
            nums[index] = odds[odd_i]
            odd_i += 1
      return nums
ob = Solution()
print(ob.solve([9, 14, 12, 91, -4, 5]))

输入

[9, 14, 12, 91, -4, 5]

输出

[91, -4, 12, 9, 14, 5]

相关文章


有用资源