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

পাইথনে সিকোয়েন্স সর্ট করার জন্য প্রয়োজনীয় ন্যূনতম সওয়াপের সংখ্যা বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে বরাবর নয় এমন একটি সংখ্যার তালিকা আছে; আমাদের কাজ হল তালিকাটি ক্রমবর্ধমান ক্রমে সর্ট করার জন্য প্রয়োজনীয় ন্যূনতম সওয়াপের সংখ্যা বের করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [3, 1, 7, 5], তবে আউটপুট হবে 2, কারণ আমরা ৩ এবং ১ কে সওয়াপ করে, তারপর ৫ এবং ৭ কে সওয়াপ করে সর্ট করা যাবে।

সমাধানের ধাপসমূহ:
  • sort_seq := nums কে সর্ট করা তালিকা
  • table := একটি নতুন ম্যাপ (ডিকশনারি)
  • nums-এ প্রতিটি ইনডেক্স i এবং ভ্যালু n এর জন্য, table[n] := i সেট করুন।
  • swaps := 0
  • i কে ০ থেকে len(nums) পর্যন্ত লুপ চালান:
    • n := nums[i]
    • s_n := sort_seq[i]
    • s_i := table[s_n]
    • যদি s_n != n হয়, তবে:
      • swaps := swaps + 1
      • nums[s_i] := n
      • nums[i] := s_n
      • table[n] := s_i
      • table[s_n] := i
  • swaps রিটার্ন করুন।
উদাহরণ কোড
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. পাইথনে দেয়া সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ১ বিটের সংখ্যা গণনা করার প্রোগ্রাম

  2. পাইথনে লাইনে থাকা সম্ভাব্য পজিশনের সংখ্যা বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

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