รวมสองลิสต์ที่ไม่ได้เรียงลำดับแล้ว เรียงผลลัพธ์โดย merge sorted arrays
ตัวอย่าง
A = [100,50,150], B = [200,30,20] Output: [20,30,50,100,150,200]
อัลกอริทึม
- เรียง A และ B แยกกัน
- Merge แบบ two-pointer (เหมือน merge sort)
- คัดลอกส่วนที่เหลือ
โค้ดตัวอย่าง
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