Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมจัดเรียงเลขคู่และเลขคี่ทั้งหมดตามลำดับการเพิ่มขึ้นและลดลงตามลำดับใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องจัดเรียงอาร์เรย์โดยรักษาเกณฑ์ต่อไปนี้

  • เลขคู่จะเรียงลำดับจากน้อยไปมาก
  • เลขคี่เรียงลำดับจากมากไปหาน้อย
  • ไม่ควรเปลี่ยนตำแหน่งสัมพัทธ์ของเลขคู่และเลขคี่

ดังนั้น หากอินพุตเป็น [9, 14, 12, 91, -4, 5] ผลลัพธ์จะเป็น [91, -4, 12, 9, 14, 5]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • evens :=รายการของพจน์คู่ในอาร์เรย์ nums
  • odds :=รายการคำคี่ในอาร์เรย์ nums
  • เรียงลำดับรายการเท่าๆ กัน
  • 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
  • หมายเลขส่งคืน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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]