কম্পিউটার

পাইথনে ক্রম সাজানোর জন্য প্রয়োজনীয় অদলবদলের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে স্বতন্ত্র সংখ্যার একটি তালিকা আছে; ক্রমবর্ধমান ক্রমে তালিকা বাছাই করার জন্য আমাদের ন্যূনতম সংখ্যক অদলবদল করতে হবে।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 1, 7, 5], তাহলে আউটপুট হবে 2, যেমন আমরা 3 এবং 1, তারপর 5 এবং 7 অদলবদল করতে পারি।

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

  • sort_seq :=তালিকার সংখ্যা সাজান
  • টেবিল :=একটি নতুন মানচিত্র
  • প্রতিটি সূচক i এবং n এর মান সংখ্যার জন্য, করুন
    • টেবিল[n] :=i
  • অদলবদল :=0
  • আমি 0 থেকে সংখ্যার আকারের মধ্যে,
      করুন
    • n :=সংখ্যা[i]
    • s_n :=sort_seq[i]
    • s_i :=টেবিল[s_n]
    • যদি s_n n এর মত না হয়, তাহলে
      • swaps :=swaps + 1
      • সংখ্যা[s_i] :=n
      • সংখ্যা[i] :=s_n
      • টেবিল[n] :=s_i
      • টেবিল[s_n] :=i
  • রিটার্ন অদলবদল

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

উদাহরণ কোড

class Solution:
def solve(self, nums):
   sort_seq = sorted(nums)
   table = {}

   for i, n in enumerate(nums):
      table[n] = i
   swaps = 0
   for i in range(len(nums)):
      n = nums[i]
      s_n = sort_seq[i]
      s_i = table[s_n]

      if s_n != n:
         swaps += 1
         nums[s_i] = n
         nums[i] = s_n
         table[n] = s_i
         table[s_n] = i

      return swaps

ob = Solution()
nums = [3, 1, 7, 5]
print(ob.solve(nums))

ইনপুট

[3, 1, 7, 5]

আউটপুট

2

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

  2. পাইথনে একটি লাইনে সম্ভাব্য অবস্থানের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম

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

  4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে