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

โปรแกรม Python รวมและเรียงลำดับสองลิสต์ที่ไม่ได้เรียง


รวมสองลิสต์ที่ไม่ได้เรียงลำดับแล้ว เรียงผลลัพธ์โดย merge sorted arrays

ตัวอย่าง

A = [100,50,150], B = [200,30,20]
Output: [20,30,50,100,150,200]

อัลกอริทึม

  1. เรียง A และ B แยกกัน
  2. Merge แบบ two-pointer (เหมือน merge sort)
  3. คัดลอกส่วนที่เหลือ

โค้ดตัวอย่าง

def unsortedarray(a, b, res, n, m):
    a.sort()
    b.sort()
    i = j = k = 0
    while i < n and j < m:
        if a[i] <= b[j]:
            res[k] = a[i]; i += 1
        else:
            res[k] = b[j]; j += 1
        k += 1
    while i < n:
        res[k] = a[i]; i += 1; k += 1
    while j < m:
        res[k] = b[j]; j += 1; k += 1

# Input A, B
res = [0] * (n + m)
unsortedarray(A, B, res, n, m)
print("Sorted merged list:", res)

ผลลัพธ์

Sorted merged list: 1 3 8 9 45 56 67 79