কম্পিউটার

সি ভাষায় বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারের সর্বনিম্ন উপাদান কীভাবে খুঁজে পাবেন?


সি প্রোগ্রামিং ভাষা দুই ধরনের অনুসন্ধান কৌশল প্রদান করে। তারা নিম্নরূপ -

  • রৈখিক অনুসন্ধান
  • বাইনারী অনুসন্ধান

বাইনারী অনুসন্ধান

  • এই পদ্ধতিটি শুধুমাত্র সাজানো তালিকায় প্রয়োগ করা যেতে পারে।
  • প্রদত্ত তালিকা দুটি সমান অংশে বিভক্ত।
  • প্রদত্ত কীটিকে তালিকার মাঝের উপাদানের সাথে তুলনা করা হয়।

এখানে, তিনটি পরিস্থিতি ঘটতে পারে, যা নিম্নরূপ -

  • যদি মাঝের উপাদানটি কীটির সাথে মিলে যায়, তাহলে অনুসন্ধানটি এখানে সফলভাবে শেষ হবে

  • যদি মাঝের উপাদানটি কীটির চেয়ে বড় হয়, তাহলে অনুসন্ধানটি বাম পার্টিশনে এগিয়ে যাবে৷

  • যদি মাঝের উপাদানটি কী থেকে কম হয়, তাহলে অনুসন্ধানটি ডান পার্টিশনে এগিয়ে যাবে।

ইনপুট (i/p) - উপাদানের সাজানো তালিকা, কী।

আউটপুট (o/p)

  • সফল – যদি চাবি পাওয়া যায়
  • অসফল – অন্যথায়

সি ভাষায় বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারের সর্বনিম্ন উপাদান কীভাবে খুঁজে পাবেন?

key = 20
mid = (low +high) /2

সি ভাষায় বাইনারি অনুসন্ধান ব্যবহার করে একটি অ্যারের সর্বনিম্ন উপাদান কীভাবে খুঁজে পাবেন?

প্রোগ্রাম1

বাইনারি অনুসন্ধান -

ব্যবহার করে একটি অ্যারেতে ন্যূনতম উপাদান খুঁজে বের করার জন্য C প্রোগ্রামটি নিচে দেওয়া হল
#include<stdio.h>
int main(){
   int a[50], n, i, key, flag = 0, low, mid, high;
   printf("enter the no: of elements:");
   scanf ("%d",&n);
   printf("enter the elements:");
   for(i=0; i<n; i++)
      scanf( "%d", &a[i]);
   printf("enter a key element:");
   scanf ("%d", &key);
   low = 0;
   high = n-1;
   while (low<= high ){
      mid = (low + high) /2;
      if (a[mid] == key){
         flag = 1;
         break;
      }
      else{
         if (a[mid] > key)
            high = mid-1;
         else
            low = mid+1;
      }
   }
   if (flag == 1)
      printf ("search is successful");
   else
      printf("search is unsuccessful");
   return 0;
}

আউটপুট

যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -

Run 1:
enter the no: of elements:5
enter the elements:
12
34
11
56
67
enter a key element:45
search is unsuccessful
Run 2:
enter the no: of elements:3
enter the elements:
12
34
56
enter a key element:34
search is successful

প্রোগ্রাম2

বাইনারি অনুসন্ধান -

ব্যবহার করে একটি অ্যারের ন্যূনতম উপাদান খুঁজে বের করার জন্য নীচে আরেকটি C প্রোগ্রাম দেওয়া হল
#include<stdio.h>
void Bmin(int *a, int i, int n){
   int j, temp;
   temp = a[i];
   j = 2 * i;
   while (j <= n){
      if (j < n && a[j+1] > a[j])
         j = j + 1;
      if (temp < a[j])
         break;
      else if (temp >= a[j]){
         a[j / 2] = a[j];
         j = 2 * j;
      }
   }
   a[j/2] = temp;
   return;
}
int binarysearchmin(int *a,int n){
   int i;
   for(i = n/2; i >= 1; i--){
      Bmin(a,i,n);
   }
   return a[1];
}
int main(){
   int n, i, x, min;
   int a[20];
   printf("Enter no of elements in an array\n");
   scanf("%d", &n);
   printf("\nEnter %d elements: ", n);
   for (i = 1; i <= n; i++){
      scanf("%d", &a[i]);
   }
   min = binarysearchmin(a, n);
   printf("\minimum element in an array is : %d", min);
   return 0;
}

আউটপুট

যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -

Enter no of elements in an array
5
Enter 5 elements:
12
23
34
45
56
minimum element in an array is: 12

  1. কীভাবে জাভাস্ক্রিপ্ট অ্যারেতে একটি উপাদান অনুসন্ধান করবেন?

  2. অ্যান্ড্রয়েডের একটি অ্যারেতে মধ্যম উপাদানটি কীভাবে খুঁজে পাবেন?

  3. সি ল্যাঙ্গুয়েজে পয়েন্টার ব্যবহার করে অ্যারে উপাদানের যোগফল কিভাবে গণনা করা যায়?

  4. সি ল্যাঙ্গুয়েজে রৈখিক অনুসন্ধান ব্যবহার করে একটি অ্যারের সর্বনিম্ন উপাদান কীভাবে খুঁজে পাবেন?