কম্পিউটার

পাইথনে মার্জ সর্ট কলের k নম্বর সহ অ্যারে খুঁজুন


ধরুন আমাদের দুটি সংখ্যা a এবং b আছে, আমাদের পরিসরে [1, a] মান ধারণকারী একটি বিন্যাস খুঁজে বের করতে হবে এবং রিকার্সিভ মার্জ সর্ট ফাংশনের কলের ঠিক b নম্বর প্রয়োজন।

সুতরাং, যদি ইনপুটটি a =10, b =15 এর মত হয়, তাহলে আউটপুট হবে [3,1,4,6,2,8,5,9,10,7]

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

  • একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি বাম, ডান, অ্যারে, বি
  • নেবে
  • যদি b <1 বা বাম + 1 ডানের মত হয়, তাহলে
    • প্রত্যাবর্তন
  • b :=b - 2
  • মাঝে :=(বাম + ডান) / 2
  • temp :=অ্যারে[মধ্য - 1]
  • অ্যারে[মিড-১] :=অ্যারে[মিড]
  • অ্যারে[মিড] :=টেম্প
  • সমাধান করুন(বাম, মধ্য, অ্যারে, বি)
  • সমাধান (মিড, ডান, অ্যারে, বি)
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
  • যদি b mod 2 0 এর মত হয়, তাহলে
    • "কোনটিই" প্রদর্শন করুন
    • প্রত্যাবর্তন
  • অ্যারে :=n + 1 আকারের একটি অ্যারে, এবং 0 দিয়ে পূরণ করুন
  • অ্যারে[0] :=1
  • আমি 1 থেকে a রেঞ্জের জন্য, কর
    • অ্যারে[i] :=i + 1
  • b :=b - 1
  • সমাধান (0, a, অ্যারে, b)
  • রিটার্ন অ্যারে, a

উদাহরণ

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

def solve(left,right,array,b):
   if (b < 1 or left + 1 == right):
      return
   b -= 2
   mid = (left + right) // 2
   temp = array[mid - 1]
   array[mid-1] = array[mid]
   array[mid] = temp
   solve(left, mid, array, b)
   solve(mid, right, array, b)
def find_arr(a,b):
   if (b % 2 == 0):
      print("None")
      return
   array = [0 for i in range(a + 2)]
   array[0] = 1
   for i in range(1, a):
      array[i] = i + 1
   b -=1
   solve(0, a, array, b)
return array, a
a = 10
b = 15
array, size = find_arr(a, b)
print(array[:size])

ইনপুট

10,15

আউটপুট

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

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

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

  3. মার্জ সাজানোর জন্য পাইথন প্রোগ্রাম

  4. পাইথনের ভিতরে একটি সংখ্যা সহ একটি স্ট্রিং কীভাবে সঠিকভাবে সাজানো যায়?