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

C#-এ Array.BinarySearch(Array, Int32, Int32, Object) মেথড উদাহরণসহ


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

বাইনারি সার্চ কীভাবে কাজ করে

  1. মাঝপথের এলিমেন্ট চেক করা হয়
  2. টার্গেট মাঝপথের চেয়ে ছোট হলে বাম পাশে, বড় হলে ডান পাশে সার্চ করা হয়
  3. প্রতিটি ধাপে সার্চ স্পেস আধা হয়ে যায় - O(log n) সময় জটিলতা

মূল পয়েন্টস

  • অ্যারেটি অবশ্যই আপवार্ড সর্টেড (ascending order) হতে হবে।
  • index এবং len প্যারামিটার দিয়ে সার্চ রেঞ্জ সীমাবদ্ধ করা যায়।
  • দুইকটি সমান এলিমেন্ট থাকলে কোনটিটি ফেরায় তা অনির্দিষ্ট (non-deterministic)।
  • জেনেরিক সংস্করণ Array.BinarySearch<T>() টাইপ সেফটি প্রদান করে।
  • স্ট্রিং অ্যারেতে কেস-সেনসিটিভ সার্চ হয় ডিফল্টভাবে।
  1. C#-এ Int32.Equals মেথড উদাহরণসহ

  2. C#-এ Int32.CompareTo মেথড উদাহরণসহ

  3. C#-এ Int32.GetTypeCode() মেথড: int-এর টাইপ কোড পেতে

  4. C#-এ Array.BinarySearch মেথড