লিনিয়ার সার্চ কী?
লিনিয়ার সার্চ হলো সিম্পল সার্চিং অ্যালগরিদম যা প্রথম এলিমেন্ট থেকে শুরু করে শেষ পর্যন্ত একে একে চেক করে। এলিমেন্ট পাওয়া গেলে থামে।
অ্যালগরিদম
- লিস্ট/টাপল এবং টার্গেট এলিমেন্ট ইনিশিয়ালাইজ করুন
- ইটারেট করে প্রতিটি এলিমেন্ট চেক করুন
- পাওয়া গেলে ফ্ল্যাগ সেট করে রিটার্ন করুন
- শেষ পর্যন্ত না পাওয়া গেলে "not found" রিটার্ন করুন
পাইথন কোড
def linear_search(iterable, element):
is_found = False
for i in range(len(iterable)):
if iterable[i] == element:
is_found = True
return f"{element} found"
if not is_found:
return f"{element} not found"
# টেস্ট
numbers_list = [1, 2, 3, 4, 5, 6]
numbers_tuple = (1, 2, 3, 4, 5, 6)
print("List:", linear_search(numbers_list, 3)) # 3 found
print("List:", linear_search(numbers_list, 7)) # 7 not found
print("Tuple:", linear_search(numbers_tuple, 3)) # 3 found
print("Tuple:", linear_search(numbers_tuple, 7)) # 7 not found
বিকল্প: enumerate ব্যবহার করে
def linear_search_v2(iterable, element):
for index, value in enumerate(iterable):
if value == element:
return f"{element} found at index {index}"
return f"{element} not found"
জটিলতা বিশ্লেষণ
- সময় জটিলতা: O(n) — সবচেয়ে খারাপ কেসে পুরো লিস্ট ট্রাভার্স
- স্থান জটিলতা: O(1) — কনস্ট্যান্ট এক্সট্রা স্পেস
- বেস্ট কেস: O(1) — প্রথম এলিমেন্টই হলে
কখন ব্যবহার করবেন
- ছোট ডেটাসেট
- অনসর্টেড ডেটা
- সিম্পল ইমপ্লিমেন্টেশন দরকার হলে
- বড় সর্টেড ডেটার জন্য বাইনারি সার্চ (O(log n)) ভালো
উপসংহার
লিনিয়ার সার্চ সবচেয়ে বেসিক সার্চিং অ্যালগরিদম। পাইথনে in অপারেটর (element in list) ইন্টারনালি লিনিয়ার সার্চই করে। কিন্তু কাস্টম লজিক বা ইনডেক্স দরকার হলে ম্যানুয়াল ইমপ্লিমেন্টেশন কাজে আসে।