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

অ্যারে এলিমেন্টের ফ্রিকোয়েন্সি অনুযায়ী সর্ট করা

একটি অ্যারে দেওয়া আছে যাতে এলিমেন্টগুলো একাধিকবার থাকতে পারে। অ্যারেটি সর্ট করতে হবে যাতে এলিমেন্টগুলো তাদের ফ্রিকোয়েন্সির বৃদ্ধমান ক্রমে সাজে। যেটা কমবার আছে সেটা আগে আসবে।

ইনপুট: nums = [1,5,3,1,3,1,2,5] → আউটপুট: [2, 5, 5, 3, 3, 1, 1, 1]।

সমাধানের ধাপসমূহ

  • mp := ম্যাপ (ফ্রিকোয়েন্সি → এলিমেন্ট লিস্ট)

  • প্রতিটি ডISTINCT এলিমেন্ট i ∈ nums-এর জন্য:

    • x = nums.count(i)
    • mp[x].append(i)
  • ans := []

  • mp-এর কীগুলো সর্ট করে (ফ্রিকোয়েন্সি অনুযায়ী):

    • mp[i]-কে ডিসেন্ডিং সর্ট করুন (এলিমেন্ট বড় হলে আগে)
    • প্রতিটি j ∈ mp[i]-এর জন্য: ans-এ j কে i বার অ্যেন্ড করুন
  • ans রিটার্ন করুন

উদাহরণ (Python)

def solve(nums):
    mp = {}
    for i in set(nums):
        x = nums.count(i)
        try:
            mp[x].append(i)
        except:
            mp[x] = [i]
    ans = []
    for i in sorted(mp):
        for j in sorted(mp[i], reverse=True):
            ans.extend([j] * i)
    return ans

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

ইনপুট

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

আউটপুট

[2, 5, 5, 3, 3, 1, 1, 1]
  1. কাউন্টিং সর্টের পাইথন প্রোগ্রাম

  2. পাইথনে সিলেকশন সর্ট (Selection Sort)

  3. পাইথনে ইনসারশন সর্ট প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: ইনসারশন সোর্ট অ্যালগরিদম