কম্পিউটার

পাইথনে সাজানো অ্যারে মার্জ করুন


ধরুন আমাদের দুটি সাজানো অ্যারে A এবং B আছে। আমাদের সেগুলিকে একত্রিত করতে হবে এবং শুধুমাত্র একটি সাজানো অ্যারে সি তৈরি করতে হবে। তালিকার আকার ভিন্ন হতে পারে।

উদাহরণস্বরূপ, ধরুন A =​​[1,2,4,7] এবং B =[1,3,4,5,6,8], তাহলে মার্জ করা তালিকা C হবে [1,1,2,3,4, 4,5,6,7,8]

এটি সমাধান করতে, এই ধাপগুলি অনুসরণ করুন -

  • সংজ্ঞায়িত করুন i :=0, j :=0 এবং শেষ :=A – 1 এর দৈর্ঘ্য
  • যখন শেষ>=0 এবং A[end],
      নয়
    • শেষ :=শেষ – ১
  • যখন j এর দৈর্ঘ্য
  • যদি i> শেষ হয় এবং A[i] না হয়, তাহলে A[i] :=B[j], এবং j 1 দ্বারা বাড়ান
  • অন্যথায় যদি A[i]> B[j], তাহলে shift(A, i), A[i] :=B[j], শেষ এবং j 1 দ্বারা বাড়ান
  • i 1 দ্বারা বাড়ান

শিফট পদ্ধতি নিচের মত কাজ করবে -

  • ইনপুট num_arr নিন, এবং i
  • j :=num_arr – 1 এর দৈর্ঘ্য
  • যদিও num_arr [j] do j :=j – 1
  • যখন j>=i, do num_arr[j + 1] =num_arr[j], এবং j :=j – 1

আরো ভালোভাবে বোঝার জন্য বাস্তবায়ন দেখি

উদাহরণ

class Solution(object):
   def merge(self, nums1, m, nums2, n):
      i = 0
      j = 0
      end = len(nums1)-1
      while end>=0 and not nums1[end]:
         end-=1
      while j<len(nums2) :
         if i>end and not nums1[i]:
            nums1[i] = nums2[j]
            j+=1
         elif nums1[i]>nums2[j]:
            self.shift(nums1,i)
            nums1[i] = nums2[j]
            end+=1
            j+=1
         i+=1
      return nums1
   def shift(self,num,i):
      j = len(num)-1
      while not num[j]:
         j-=1
      while j>=i:
         num[j+1] = num[j]
         j-=1
ob = Solution()
print(ob.merge([1,2,3,0,0,0],3,[2,5,6],3))

ইনপুট

[1,2,3,0,0,0]
[2,5,6]

আউটপুট

[1, 2, 2, 3, 5, 6]

  1. পাইথনে সাজানো অ্যারেতে পরম পার্থক্যের যোগফল খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে মার্জ সর্ট ব্যাখ্যা কর

  3. পাইথন প্রোগ্রামে সন্নিবেশ বাছাই

  4. সন্নিবেশ সাজানোর জন্য পাইথন প্রোগ্রাম