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

बाइनरी सर्च (रिकर्सिव और इटरेटिव) के लिए C प्रोग्राम?


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

Input: A[] = {0,2,6,11,12,18,34,45,55,99} n=55 Output: 55 इंडेक्स = 8 पर

व्याख्या

हमारे ऐरे के लिए -

हम 55 की तुलना ऐरे के मध्य एलिमेंट से करेंगे जो 18 है, जो 55 से कम है इसलिए हम ऐरे के दूसरे आधे भाग का उपयोग करेंगे यानी ऐरे {24, 45, 55, 99}, फिर से मध्य 55 है। खोज एलिमेंट के मान की इसके साथ जांच करें। और मान मेल खाता है, तो हम इस मान का इंडेक्स लौटाएंगे जो 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. C प्रोग्राम: सरणी के तत्वों का गुणनफल C प्रोग्राम: सरणी के तत्वों का गुणनफल

    समस्या विवरण एक सरणी arr[n] दी गई है, इसके सभी तत्वों का गुणनफल ज्ञात करें। उदाहरण सरणीगुणनफलगणना {10, 20, 3, 4, 8}1920010×20×3×4×8 {1, 2, 3, 4, 3, 2, 1}1441×2×3×4×3×2×1 {5, 0, 10}0शून्य से गुणनफल = 0 एल्गोरिदम result = 1 आरंभ करें प्रत्येक तत्व के लिए: result *= arr[i] result लौटाएं C प्

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

    एक आयत की लंबाई और चौड़ाई दी गई है, हमें उसका क्षेत्रफल और परिमाप निकालना है। आयत एक 2-D आकृति है जिसमें चार भुजाएं और चार 90° के कोण होते हैं। विपरीत भुजाएं समान होती हैं। विकर्ण भी समान होते हैं। क्षेत्रफल = लंबाई × चौड़ाई परिमाप = 2 × (लंबाई + चौड़ाई) उदाहरण इनपुट: 20 30 आउटपुट: area of rectangl

  1. पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम पायथन प्रोग्राम: लीनियर सर्च एल्गोरिदम

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में लीनियर सर्च और इसके कार्यान्वयन के बारे में जानेंगे।एल्गोरिदमदिए गए arr[] के बाएं सबसे तत्व से शुरू करें और एक-एक करके तत्व x की तुलना arr[] के प्रत्येक तत्व से करेंयदि x किसी तत्व से मेल खाता है, तो इंडेक्स मान वापस करें।यदि x, arr[] के किसी भी त