(Binary Search) মধ্যে বাইনারি অনুসন্ধান অ্যালগরিদম Java

বাইনারি সার্চ অ্যালগরিদম হল Java প্রোগ্রামিং-এর একটি দক্ষ পদ্ধতি, যা একটি সাজানো অ্যারের মধ্যে একটি নির্দিষ্ট মান খুঁজে পেতে ব্যবহৃত হয়। এই পদ্ধতিটি ক্রমাগত অ্যারেটিকে দুটি অংশে বিভক্ত করে এবং মধ্যম উপাদানের সাথে অনুসন্ধান মান তুলনা করে।

বাইনারি অনুসন্ধান অ্যালগরিদম কিভাবে কাজ করে

বাইনারি অনুসন্ধান অ্যালগরিদম অ্যারের মধ্যম উপাদানের সাথে অনুসন্ধান মান তুলনা করে শুরু হয়। যদি অনুসন্ধানের মান মধ্যম উপাদানের সমান হয়, তবে অ্যালগরিদম সেই উপাদানটির অবস্থান প্রদান করে। যদি অনুসন্ধানের মান মধ্যম উপাদানের চেয়ে কম হয়, তবে অ্যালগরিদম অ্যারের বাম অর্ধেক অনুসন্ধান চালিয়ে যায়। যদি অনুসন্ধানের মান বেশি হয়, অ্যালগরিদম অ্যারের ডান অর্ধেক অনুসন্ধান চালিয়ে যায়। এই প্রক্রিয়াটি পুনরাবৃত্তি হয় যতক্ষণ না অনুসন্ধান মান পাওয়া যায় বা অনুসন্ধান করার জন্য আর কোনো উপাদান না থাকে।

বাইনারি অনুসন্ধান অ্যালগরিদমের সুবিধা এবং অসুবিধা

সুবিধাদি:

  • উচ্চ দক্ষতা: এই অ্যালগরিদমটি প্রতিটি ধাপে অর্ধেক উপাদানকে সরিয়ে দেয়, বড় অ্যারেগুলির জন্য অনুসন্ধানকে অপ্টিমাইজ করে৷
  • কম সময়ের জটিলতা: এই অ্যালগরিদমের সময় জটিলতা হল O(log n), এটিকে বড় ডেটাসেটের জন্য কার্যকর করে তোলে।

অসুবিধা:

  • সাজানো অ্যারে প্রয়োজনীয়তা: অ্যালগরিদম শুধুমাত্র সাজানো অ্যারেগুলির সাথে কাজ করে।

উদাহরণ এবং ব্যাখ্যা

একটি সাজানো পূর্ণসংখ্যা অ্যারেতে একটি নির্দিষ্ট পূর্ণসংখ্যা খুঁজে পেতে বাইনারি অনুসন্ধান অ্যালগরিদম ব্যবহার করার একটি উদাহরণ বিবেচনা করুন Java ।

public class BinarySearchExample {  
    public static int binarySearch(int[] array, int target) {  
        int left = 0;  
        int right = array.length- 1;  
  
        while(left <= right) {  
            int mid = left +(right- left) / 2;  
  
            if(array[mid] == target) {  
                return mid; // Return position if found  
            } else if(array[mid] < target) {  
                left = mid + 1;  
            } else {  
                right = mid- 1;  
            }  
        }  
        return -1; // Return -1 if not found  
    }  
  
    public static void main(String[] args) {  
        int[] numbers = { 1, 3, 5, 7, 9, 11, 13, 15 };  
        int target = 9;  
  
        int position = binarySearch(numbers, target);  
  
        if(position != -1) {  
            System.out.println("Element " + target + " found at position " + position);  
        } else {  
            System.out.println("Element " + target + " not found in the array");  
        }  
    }  
}  

এই উদাহরণে, আমরা একটি সাজানো পূর্ণসংখ্যা অ্যারেতে 9 নম্বর খুঁজে পেতে বাইনারি অনুসন্ধান অ্যালগরিদম ব্যবহার করি। অ্যালগরিদম অ্যারের মাধ্যমে পুনরাবৃত্তি করে এবং মধ্যম মানের সাথে অনুসন্ধান মান তুলনা করে। এই ক্ষেত্রে, 9 নম্বরটি অ্যারের অবস্থান 4(0-ভিত্তিক সূচক) এ পাওয়া যায়।

যদিও এই উদাহরণটি দেখায় যে কীভাবে বাইনারি অনুসন্ধান অ্যালগরিদম একটি সাজানো পূর্ণসংখ্যা অ্যারেতে একটি উপাদান খুঁজে পেতে পারে, এটি Java প্রোগ্রামিংয়ের অন্যান্য অনুসন্ধান পরিস্থিতিতেও প্রয়োগ করা যেতে পারে।