কম্পিউটার টিউটোরিয়াল

পাইথনে K-সর্টেড লিস্ট মার্জ করার প্রোগ্রাম


মান ল করুন কিছু লিস্ট, এই লিস্টগুলো সর্টেড। আমাদের এগুলোকে একটি লিস্টে মার্জ করতে হবে। এজন্য হিপ ডেটা স্ট্রাকচার ব্যবহার করব। তাই লিস্টগুলো [1,4,5], [1,3,4], [2,6] হলে ফাইনাল লিস্ট হবে [1,1,2,3,4,4,5,6]।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • n := lists-এর আকার
  • heap := একটি নতুন তালিকা
  • lists-এ থাকা প্রতিটি ইনডেক্স i এবং row-এর জন্য:
    • যদি row খালি না হয়, (row[0], i, 0) heap-এ পুশ করুন
  • res := একটি নতুন তালিকা
  • যখন heap খালি না হয়:
    • num, row, col := heap-এর টপ এলিমেন্ট
    • num কে res-এ অ্যাপেন্ড করুন
    • যদি col < lists[row]-এর আকার - ১, lists[row][col+1], row, col+1 heap-এ পুশ করুন
  • res ফেরত দিন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

import heapq class Solution:    def solve(self, lists):       n = len(lists)       heap = []       for i, row in enumerate(lists):          if row:             heapq.heappush(heap, (row[0], i, 0))       res = []       while heap:           num, row, col = heapq.heappop(heap)           res.append(num)          if col < len(lists[row]) - 1:             heapq.heappush(heap, (lists[row][col + 1], row, col + 1))       return res ob = Solution() lists = [[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]] print(ob.solve(lists))

ইনপুট

[[],[],[11, 13],[],[4, 4, 14],[4],[11],[1, 8]]

আউটপুট

[1, 4, 4, 4, 8, 11, 11, 13, 14]

  1. পাইথনে হিপ লিস্ট ম্যাক্স হিপ কিনা চেক করা

  2. মার্জ সর্টের পাইথন প্রোগ্রাম

  3. পাইথনে ইটেরেটিভ মার্জ সর্ট প্রোগ্রাম

  4. হিপ সর্টের পাইথন প্রোগ্রাম