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

পাইথনে সর্টেড লিস্টে আইটেম ইনসার্ট করুন অর্ডার বজায় রেখে


সমস্যা বিবরণ

একটি ইতিমধ্যে সর্ট করা লিস্টে নতুন একটি এলিমেন্ট ইনসার্ট করতে হবে যেন লিস্টটি সর্টেড অর্ডারে থাকে। পাইথনের বিল্ট-ইন bisect মডিউল এই কাজটি দক্ষতার সাথে করে।

বিসেক্ট মডিউল

bisect.insort(list, element) ফাংশনটি এলিমেন্টটিকে সঠিক পজিশনে ইনসার্ট করে যাতে লিস্ট সর্টেড থাকে। এটি বাইনারি সার্চ ব্যবহার করে O(log n) সময়ে ইনসার্ট পজিশন খুঁজে বের করে।

উদাহরণ

import bisect

# সর্টেড লিস্ট
numbers = [10, 23, 27, 32]
element = 25

# ইনসার্ট করুন
bisect.insort(numbers, element)

print(numbers)  # আউটপুট: [10, 23, 25, 27, 32]

অন্যান্য উপযোগী ফাংশন

  • bisect.bisect_left(list, x) — x ইনসার্ট করার বাম পজিশন রিটার্ন করে
  • bisect.bisect_right(list, x) — x ইনসার্ট করার ডান পজিশন রিটার্ন করে
  • bisect.insort_left(list, x) — বাম পজিশনে ইনসার্ট (ডুপ্লিকেট হলে বামে)
  • bisect.insort_right(list, x) — ডান পজিশনে ইনসার্ট (ডিফল্ট)

ম্যানুয়াল বনাম বিসেক্ট

ম্যানুয়ালি লুপ চালিয়ে পজিশন খুঁজলে O(n) সময় লাগে। bisect বাইনারি সার্চ দিয়ে O(log n) এ পজিশন খুঁজে দেয়, তবে লিস্টে ইন্সার্টশনের জন্য এলিমেন্ট শিফট করার কারণেই ওভারঅল O(n)। বড় লিস্টে অনেক দক্ষ।

উপসংহার

bisect.insort ব্যবহার করে সর্টেড লিস্ট মেইনটেইন করা সহজ ও দক্ষ। কাস্টম কমপারিজন কী দরকার হলে bisect.insort_left বা bisect.insort_right ব্যবহার করুন।

  1. পাইথনে লিস্ট সর্টেড কিনা যাচাই করুন

  2. পাইথন প্রোগ্রাম সর্টেড লিস্টে উপাদান ইনসার্ট করা

  3. পাইথন লিস্ট এলিমেন্টের ভ্যালু আপডেট কীভাবে করবেন?

  4. পাইথনে লিস্টে একটি আইটেমের ইনডেক্স কীভাবে খুঁজে বের করবেন?