বাইসেকশন অ্যালগরিদম একটি লিস্টে वह পজিশন খুঁজে বের করতে ব্যবহৃত হয়, যেখানে ডেটা ইনসার্ট করলে লিস্টটি সর্টেড থাকে। পাইথনে bisect নামে একটি মডিউল রয়েছে। এই মডিউল ব্যবহার করে আমরা বাইসেকশন অ্যালগরিদম ব্যবহার করতে পারি।
এই মডিউল ব্যবহার করতে হলে, আমাদের এটি ইম্পোর্ট করতে হবে -
import bisect
কিছু বাইসেকশন সংক্রান্ত অপারেশন রয়েছে। এগুলো হলো -
bisect.bisect(list, element, begin, end) মেথড
এই মেথড সর্টেড লিস্টে একটি পজিশন খুঁজে বের করতে ব্যবহৃত হয়, যেখানে নম্বরটি রাখলে লিস্ট সর্টেড থাকবে। যদি এলিমেন্টটি ইতিমধ্যে উপস্থিত থাকে, তবে এটি ডানপাশের পজিশন ফেরত দেবে, যেখানে নম্বরটি ইনসার্ট করা যায়।
bisect.bisect_left(list, element, begin, end) মেথড
এই মেথড bisect() মেথডের মতোই। একমাত্র পার্থক্য হলো, যদি আইটেমটি ইতিমধ্যে উপস্থিত থাকে, তবে এই মেথড ডেটা ইনসার্ট করার জন্য বামপাশের লোকেশন ফেরত দেবে।
bisect.bisect_right(list, element, begin, end) মেথড
এই মেথড সম্পূর্ণভাবে bisect() মেথডের মতো।
bisect.insort(list, element, begin, end) মেথড
এই মেথড সঠিক পজিশনে এলিমেন্ট ইনসার্ট করার পর একটি সর্টেড লিস্ট পাওয়ার জন্য ব্যবহৃত হয়। যদি এলিমেন্টটি ইতিমধ্যে উপস্থিত থাকে, তবে এটি লিস্ট সর্টেড রাখতে ডানপাশের পজিশনে ইনসার্ট করবে।
bisect.insort_left(list, element, begin, end) মেথড
এই মেথড insort() মেথডের মতোই। একমাত্র পার্থক্য হলো, যদি এলিমেন্টটি ইতিমধ্যে উপস্থিত থাকে, তবে এটি লিস্ট সর্টেড রাখতে বামপাশের পজিশনে ইনসার্ট করবে।
bisect.insort_right(list, element, begin, end) মেথড
এই মেথড সম্পূর্ণভাবে insort() মেথডের মতো।
উদাহরণ কোড
import bisect
my_list = [11, 25, 36, 47, 56, 69, 69, 69, 78, 78, 91, 102, 120]
print('Correct Location to insert 53 is: ' + str(bisect.bisect(my_list, 53, 0, len(my_list))))
print('Correct right Location to insert 69 is: ' + str(bisect.bisect_right(my_list, 69, 0, len(my_list))))
print('Correct left Location to insert 69 is: ' + str(bisect.bisect_left(my_list, 69, 0, len(my_list))))
bisect.insort(my_list, 59, 0, len(my_list))
print(my_list)
bisect.insort_left(my_list, 78, 0, len(my_list))
print(my_list)
আউটপুট
Correct Location to insert 53 is: 4 Correct right Location to insert 69 is: 8 Correct left Location to insert 69 is: 5 [11, 25, 36, 47, 56, 59, 69, 69, 69, 78, 78, 91, 102, 120] [11, 25, 36, 47, 56, 59, 69, 69, 69, 78, 78, 78, 91, 102, 120]