Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी प्रोग्राम फॉर बाइनरी सर्च (पुनरावर्ती और पुनरावृत्त)?

द्विआधारी खोज एल्गोरिथ्म एक एल्गोरिथ्म है जो तुलना और विभाजन तंत्र पर आधारित है। बाइनरी सर्च एल्गोरिथम को अर्ध-अंतराल खोज, लॉगरिदमिक खोज, या बाइनरी चॉप के रूप में भी जाना जाता है। . द्विआधारी खोज एल्गोरिथ्म, एक क्रमबद्ध सरणी में लक्ष्य मान की स्थिति खोजें। यह लक्ष्य मान की तुलना सरणी के मध्य तत्व से करता है। यदि तत्व लक्ष्य तत्व के बराबर है तो एल्गोरिथम सूचकांक लौटाता है पाए गए तत्व का। और यदि वे समान नहीं हैं, तो खोज एल्गोरिथ्म उस सरणी के आधे भाग का उपयोग करता है, मान की तुलना के आधार पर, एल्गोरिथम पहले-आधे (जब मान मध्य से कम है) और दूसरी छमाही में से किसी एक का उपयोग करता है ( जब मान मध्य से अधिक हो)। और अगले सरणी आधे के लिए भी ऐसा ही करता है।

Input:
A[] = {0,2,6,11,12,18,34,45,55,99}
n=55
Output:
55 at Index = 8

स्पष्टीकरण

हमारी सरणी के लिए -

हम 55 की तुलना करेंगे, सरणी के मध्य तत्व के साथ जो 18 है, जो 55 से कम है इसलिए हम सरणी के दूसरे भाग का उपयोग करेंगे यानी सरणी {24, 45, 55, 99}, फिर से मध्य 55 है। इसके साथ search element का value check करें। और मूल्य मिलान हुआ, तो हम इस मान की अनुक्रमणिका को 8 के साथ वापस कर देंगे।

यदि खोज तत्व मध्य से छोटा होता तो हम पहले-आधे का उपयोग करते और तब तक चलते रहते जब तक कि तत्व सरणी के मध्य में नहीं मिल जाता।

बाइनरी सर्च को लागू करने के लिए हम कोड को दो तरह से लिख सकते हैं। ये दो तरीके केवल उसी तरह से स्थगित होते हैं जैसे हम फ़ंक्शन को कॉल करते हैं जो बाइनरी खोज तत्व की जांच करता है। वे हैं:

  • पुनरावृत्तियों का उपयोग करना - इसका मतलब है कि फ़ंक्शन के अंदर एक लूप का उपयोग करना जो मध्य तत्व की समानता की जांच करता है।

  • उपयोग करना इस पद्धति में, फ़ंक्शन अलग-अलग मानों के सेट के साथ बार-बार खुद को कॉल करता है।

उदाहरण

#include<stdio.h>
int iterativeBsearch(int A[], int size, int element);
int main() {
   int A[] = {0,12,6,12,12,18,34,45,55,99};
   int n=55;
   printf("%d is found at Index %d \n",n,iterativeBsearch(A,10,n));
   return 0;
}
int iterativeBsearch(int A[], int size, int element) {
   int start = 0;
   int end = size-1;
   while(start<=end) {
      int mid = (start+end)/2;
      if( A[mid] == element) {
         return mid;
      } else if( element < A[mid] ) {
         end = mid-1;
      } else {
         start = mid+1;
      }
   }
   return -1;
}

आउटपुट

55 is found at Index 8

उदाहरण

#include<stdio.h>
int RecursiveBsearch(int A[], int start, int end, int element) {
   if(start>end) return -1;
      int mid = (start+end)/2;
   if( A[mid] == element ) return mid;
   else if( element < A[mid] )
      RecursiveBsearch(A, start, mid-1, element);
   else
      RecursiveBsearch(A, mid+1, end, element);
}
int main() {
   int A[] = {0,2,6,11,12,18,34,45,55,99};
   int n=55;
   printf("%d is found at Index %d \n",n,RecursiveBsearch(A,0,9,n));
   return 0;
}

आउटपुट

55 is found at Index 8

  1. सरणी के उत्पाद के लिए सी कार्यक्रम

    n तत्वों की एक सरणी गिरफ्तारी [n] को देखते हुए, कार्य उस सरणी के सभी तत्वों के गुणनफल को खोजना है। जैसे हमारे पास 7 तत्वों की एक सरणी गिरफ्तारी [7] है, इसलिए इसका उत्पाद इस तरह होगा उदाहरण Input: arr[] = { 10, 20, 3, 4, 8 } Output: 19200 Explanation: 10 x 20 x 3 x 4 x 8 = 19200 Input: arr[] = { 1

  1. C आयत के क्षेत्रफल और परिमाप के लिए कार्यक्रम

    एक आयत की लंबाई और चौड़ाई को देखते हुए हमें उसका क्षेत्रफल और परिमाप ज्ञात करना होता है। आयत 2-डी आकृति है जिसमें चार भुजाएँ और प्रत्येक 90 डिग्री के चार कोण हैं। आयत की सभी भुजाएँ समान नहीं होती केवल आयत की सम्मुख भुजाएँ समान होती हैं। एक आयत के विकर्ण भी समान लंबाई के होते हैं। नीचे आयत का आरेखी

  1. रैखिक खोज के लिए पायथन कार्यक्रम

    इस लेख में, हम लीनियर सर्च और पायथन 3.x में इसके कार्यान्वयन के बारे में जानेंगे। या पहले। एल्गोरिदम Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with