C#-এ Array.BinarySearch() মেথডটি একটি এক-মাত্রিক সর্টেড অ্যারে (sorted array)-এর নির্দিষ্ট রেঞ্জে একটি মান বাইনারি সার্চ (binary search) অ্যালগরিদম ব্যবহার করে খুঁজে বের করে। এটি IComparable ইন্টারফেস ব্যবহার করে তুলনা করে।
গুরুত্বপূর্ণ দ্রষ্টব্য
নোট: এই মেথডটি কেবল সর্টেড (sorted) অ্যারেতেই কাজ করে। অনসর্টেড অ্যারেতে ব্যবহার করলে ভুল ফলাফল দেবে।
সিনট্যাক্স (Syntax)
public static int BinarySearch (Array arr, int index, int len, object val);
প্যারামিটারসমূহ:
arr- সার্চ করার জন্য ১-মাত্রিক অ্যারেindex- সার্চ রেঞ্জের শুরুতম ইন্ডেক্সlen- সার্চ রেঞ্জের দৈর্ঘ্যval- খুঁজে বের করার জন্য অবজেক্ট/মান
রিটার্ন মান
- সাফল্য: এলিমেন্টের ইন্ডেক্স (০ বা ধনাত্মক)
- ব্যর্থতা: বিটওয়াইজ কমপ্লিমেন্ট (~) অপারেটর সহ নেগেটিভ সংখ্যা।utas:
~indexযেখানেindexহল যেখানে এলিমেন্টটি থাকা উচিত ছিল।
উদাহরণ ১: সর্টেড অ্যারেতে মান খুঁজে বের করা
using System;
public class Demo {
public static void Main() {
int[] intArr = {10, 20, 30, 40, 50};
Array.Sort(intArr);
Console.WriteLine("Array elements...");
foreach(int i in intArr) {
Console.WriteLine(i);
}
Console.Write("Element 20 is at index = " + Array.BinarySearch(intArr, 1, 3, 20));
}
}
আউটপুট
Array elements... 10 20 30 40 50 Element 20 is at index = 1
উদাহরণ ২: অস্তিত্বহীন মান খুঁজে বের করা
using System;
public class Demo {
public static void Main() {
int[] intArr = {5, 10, 15, 20};
Array.Sort(intArr);
Console.WriteLine("Array elements...");
foreach(int i in intArr) {
Console.WriteLine(i);
}
Console.Write("Element 25 is at index = " + Array.BinarySearch(intArr, 0, 2, 20));
}
}
আউটপুট
Array elements... 5 10 15 20 Element 25 is at index = -3
বাইনারি সার্চ কীভাবে কাজ করে
- মাঝপথের এলিমেন্ট চেক করা হয়
- টার্গেট মাঝপথের চেয়ে ছোট হলে বাম পাশে, বড় হলে ডান পাশে সার্চ করা হয়
- প্রতিটি ধাপে সার্চ স্পেস আধা হয়ে যায় - O(log n) সময় জটিলতা
মূল পয়েন্টস
- অ্যারেটি অবশ্যই আপवार্ড সর্টেড (ascending order) হতে হবে।
indexএবংlenপ্যারামিটার দিয়ে সার্চ রেঞ্জ সীমাবদ্ধ করা যায়।- দুইকটি সমান এলিমেন্ট থাকলে কোনটিটি ফেরায় তা অনির্দিষ্ট (non-deterministic)।
- জেনেরিক সংস্করণ
Array.BinarySearch<T>()টাইপ সেফটি প্রদান করে। - স্ট্রিং অ্যারেতে কেস-সেনসিটিভ সার্চ হয় ডিফল্টভাবে।