একটি দীর্ঘ তালিকায় প্রতিটি সন্নিবেশের পরে সাজানোর ক্রিয়াকলাপ সম্পাদন করা প্রসেসরের দ্বারা ব্যবহৃত সময়ের পরিপ্রেক্ষিতে ব্যয়বহুল হতে পারে। দ্বিখণ্ডিত মডিউল নিশ্চিত করে যে তালিকাটি সন্নিবেশের পরে স্বয়ংক্রিয়ভাবে সাজানো থাকবে। এই উদ্দেশ্যে, এটি দ্বিখণ্ডন অ্যালগরিদম ব্যবহার করে। মডিউলটির নিম্নলিখিত ফাংশন রয়েছে:
দ্বিভাগ_বাম()
এই পদ্ধতিটি সাজানো ক্রম বজায় রাখার জন্য তালিকার একটি প্রদত্ত উপাদানের জন্য সন্নিবেশ বিন্দু সনাক্ত করে। যদি এটি ইতিমধ্যেই তালিকায় উপস্থিত থাকে, তাহলে সন্নিবেশ বিন্দুটি যেকোনো বিদ্যমান এন্ট্রির আগে (বাম দিকে) হবে। ফিরতি মান list.insert()
-এর প্রথম প্যারামিটার হিসেবে ব্যবহার করা যেতে পারেদ্বিভাগ_রাইট()
এই পদ্ধতিটি bisect_left() এর অনুরূপ, কিন্তু একটি সন্নিবেশ বিন্দু ফেরত দেয় যা a-তে x-এর যেকোনো বিদ্যমান এন্ট্রির পরে (ডানদিকে) আসে।
bisect.insort_left()
এই পদ্ধতিতে একটি সাজানো ক্রমে প্রদত্ত মান সন্নিবেশ করান। এটি a.insert(bisect.bisect_left(a, x, lo, hi), x)
এর সমতুল্যbisect.insort_right()
bisect.insort()
উভয় পদ্ধতিগুলি insort_left() এর অনুরূপ, তবে একই মানের বিদ্যমান যেকোনো এন্ট্রির পরে তালিকায় প্রদত্ত মান সন্নিবেশ করা হচ্ছে।
উদাহরণ
>>> nums = [45,21,34,87,56,12,5,98,30,63] >>> nums.sort() >>> nums [5, 12, 21, 30, 34, 45, 56, 63, 87, 98] >>> import bisect >>> p = bisect.bisect_left(nums,50) >>> p 6 >>> nums.insert(p,50) >>> nums [5, 12, 21, 30, 34, 45, 50, 56, 63, 87, 98] >>> bisect.insort(nums, 29) >>> nums [5, 12, 21, 29, 30, 34, 45, 50, 56, 63, 87, 98]