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

โปรแกรมที่จะรวมรายการที่เรียงลำดับสองรายการเพื่อสร้างรายการเรียงลำดับที่ใหญ่ขึ้นใน Python


สมมติว่าเรามีรายการที่เรียงลำดับสองรายการ A และ B เราต้องรวมเข้าด้วยกันและสร้างรายการที่จัดเรียงเพียงรายการเดียว C ขนาดของรายการอาจแตกต่างกัน

ตัวอย่างเช่น สมมติว่า A =[1,2,4,7] และ B =[1,3,4,5,6,8] จากนั้นรายการที่รวม C จะเป็น[1,1,2,3,4, 4,5,6,7,8]

เราจะแก้ปัญหานี้โดยใช้การเรียกซ้ำ ดังนั้นฟังก์ชันจะทำงานดังนี้ -

  • x:=รายการใหม่
  • i:=0, j:=0
  • ในขณะที่ i <ขนาดของ (lst0) และ j <ขนาดของ (lst1) ทำ
    • ถ้า lst0[i]> lst1[j] แล้ว
      • แทรก lst1[j] ที่ส่วนท้ายของ x
      • j:=j+1
    • มิฉะนั้นเมื่อ lst0[i]
    • แทรก lst0[i] ที่ส่วนท้ายของ x
    • i:=i+1
  • มิฉะนั้น
    • แทรก lst0[i] ที่ส่วนท้ายของ x
    • แทรก lst1[j] ที่ส่วนท้ายของ x
    • i:=i+1, j:=j+1
  • ในขณะที่ฉัน
  • แทรก lst0[i] ที่ส่วนท้ายของ x
  • i:=i+1
  • ในขณะที่เจ
  • แทรก lst1[j] ที่ส่วนท้ายของ x
  • j:=j+1
  • ผลตอบแทน x
  • มาดูการใช้งานกันให้เกิดความเข้าใจกันมากขึ้น

    ตัวอย่าง

    class Solution:
       def solve(self, lst0, lst1):
          x=[]
          i=0
          j=0
          while(i<len(lst0) and j<len(lst1)):
             if(lst0[i]>lst1[j]):
                x.append(lst1[j])
                j=j+1
             elif(lst0[i]<lst1[j]):
                x.append(lst0[i])
                i=i+1
             else:
                x.append(lst0[i])
                x.append(lst1[j])
                i=i+1
                j=j+1
          while(i<len(lst0)):
             x.append(lst0[i])
             i=i+1
          while(j<len(lst1)):
             x.append(lst1[j])
             j=j+1
          return x
    ob = Solution()
    print(ob.solve([1,2,4,7], [1,3,4,5,6,8]))

    อินพุต

    [1,2,4,7], [1,3,4,5,6,8]

    ผลลัพธ์

    [1, 1, 2, 3, 4, 4, 5, 6, 7, 8]