কম্পিউটার

পাইথনে একটি অ্যারে সাজানোর জন্য কতগুলি অদলবদল প্রয়োজন তা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন, আমাদের কাছে nums নামক একটি অ্যারে আছে এবং আমাদেরকে সংখ্যাগুলিকে ক্রমবর্ধমান বা ক্রমানুসারে সাজানোর জন্য প্রয়োজনীয় অদলবদল সংখ্যা খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি nums =[2, 5, 6, 3, 4] এর মত হয়, তাহলে আউটপুট হবে 2 কারণ প্রাথমিকভাবে সংখ্যাগুলিতে [2, 5, 6, 3, 4] আছে। আমরা যদি 6 এবং 4 নম্বর অদলবদল করি, তাহলে অ্যারে হবে [2,5,4,3,6]। তারপর, যদি আমরা 5 এবং 3 নম্বরগুলি অদলবদল করি, তাহলে অ্যারে হবে [2,3,4,5,6]। তাই অ্যারেটিকে আরোহী ক্রমে সাজানোর জন্য 2টি অদলবদল প্রয়োজন।

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

  • একটি ফাংশন swap_count() সংজ্ঞায়িত করুন। এটি input_arr
      নেবে
    • pos :=input_arr-এ প্রতিটি আইটেমের জন্য tuples (item_postion, item) ধারণকারী নতুন তালিকা
    • input_arr-এ থাকা আইটেম অনুযায়ী তালিকার অবস্থান বাছাই করুন
    • cnt :=0
    • রেঞ্জ 0 থেকে input_arr এর আকারের জন্য, করুন
      • যদিও সত্য, কর
        • যদি pos[index, 0] সূচকের মতো হয়, তাহলে
          • লুপ থেকে প্রস্থান করুন
        • অন্যথায়,
          • cnt :=swap_count + 1
          • swap_index :=pos[index, 0]
          • (pos[index], pos[swap_index]) এর মানগুলি অদলবদল করুন
    • cnt ফেরত
  • প্রধান ফাংশন/পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন −
    • নূন্যতম রিটার্ন করুন (swap_count(input_arr) , swap_count(input_arr বিপরীত ক্রমে))

উদাহরণ

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

def swap_count(input_arr):
   pos = sorted(list(enumerate(input_arr)), key=lambda x: x[1])
   cnt = 0

   for index in range(len(input_arr)):
      while True:
         if (pos[index][0] == index):
            break
         else:
            cnt += 1
            swap_index = pos[index][0]
            pos[index], pos[swap_index] = pos[swap_index], pos[index]

   return cnt

def solve(input_arr):
   return min(swap_count(input_arr), swap_count(input_arr[::-1]))

nums = [2, 5, 6, 3, 4]
print(solve(nums))

ইনপুট

[2, 5, 6, 3, 4]

আউটপুট

2

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

  2. একটি অ্যারের বৃহত্তম উপাদান খুঁজে পেতে পাইথন প্রোগ্রাম

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

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