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

পাইথনে বাইনারি সার্চ – bisect মডিউল (bisect_left, bisect_right)

পাইথনের `bisect` মডিউল সোর্টেড লিস্টে বাইনারি সার্চ করার জন্য ব্যবহৃত হয়। তিনটি কমন টাস্ক দেখানো হলো।

১. প্রথম অকারেন্স (First Occurrence) – bisect_left

from bisect import bisect_left
def BinSearch(a, x):
    i = bisect_left(a, x)
    if i != len(a) and a[i] == x:
        return i
    return -1

a = [2,3,4,4,5,8,12,36,36,36,85,89,96]
print("First occurrence of 4:", BinSearch(a, 4))  # 2

২. x থেকে ছোট সবচেয়ে বড় মান (Greatest value < x)

def BinSearch(a, x):
    i = bisect_left(a, x)
    return i-1 if i else -1

print("Larger value smaller than 8:", BinSearch(a, 8))  # 4 (value 5)

৩. শেষ অকারেন্স (Rightmost Occurrence) – bisect_right

from bisect import bisect_right
def BinSearch(a, x):
    i = bisect_right(a, x)
    if i != len(a)+1 and a[i-1] == x:
        return i-1
    return -1

print("Rightmost occurrence of 36:", BinSearch(a, 36))  # 9

`bisect_left` বাম পাশে ইনসার্শন পয়েন্ট দেয়, `bisect_right` ডান পাশে। ডুপ্লিকেট ভ্যালুর জন্য এটি কার্যকর।

  1. পাইথনে পোস্টঅর্ডার থেকে বাইনারি সার্চ ট্রি তৈরি করুন

  2. পাইথনে প্রिअর্ডার ট্রভার্সাল থেকে বাইনারি সার্চ ট্রি নির্মাণ

  3. পাইথনে বাইনারি সার্চ ট্রিতে লোয়েস্ট কমন আনসেসটর

  4. পাইথনে সোর্টেড অ্যারে থেকে বাইনারি সার্চ ট্রি (Convert Sorted Array to BST)