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

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


बाइनरी सर्च एक खोज एल्गोरिदम है जिसका उपयोग एक सॉर्टेड ऐरे में किसी तत्व (टारगेट वैल्यू) की स्थिति खोजने के लिए किया जाता है। बाइनरी सर्च लागू करने से पहले ऐरे को सॉर्ट किया जाना चाहिए।

बाइनरी सर्च को इन नामों से भी जाना जाता है: लॉगरिदमिक सर्च, बाइनरी चॉप, हाफ इंटरवल सर्च।

कार्यप्रणाली

बाइनरी सर्च एल्गोरिदम खोजे जाने वाले तत्व की तुलना ऐरे के मध्य तत्व से करके काम करता है और इस तुलना के आधार पर आवश्यक प्रक्रिया का पालन करता है।

केस 1 - तत्व = मध्य, तत्व मिल गया, इंडेक्स लौटाएं।

केस 2 - तत्व > मध्य, मध्य+1 इंडेक्स से n तक सब-ऐरे में तत्व खोजें।

केस 3 - तत्व < मध्य, 0 इंडेक्स से मध्य-1 तक सब-ऐरे में तत्व खोजें।

एल्गोरिदम

पैरामीटर्स: initial_value, end_value

चरण 1: ऐरे का मध्य तत्व खोजें। उपयोग करें: middle = initial_value + end_value / 2;
चरण 2: यदि middle = तत्व, तो 'तत्व मिला' और इंडेक्स लौटाएं।
चरण 3: यदि middle > तत्व, तो फंक्शन को end_value = middle - 1 के साथ कॉल करें।
चरण 4: यदि middle < तत्व, तो फंक्शन को start_value = middle + 1 के साथ कॉल करें।
चरण 5: बाहर निकलें।

बाइनरी सर्च एल्गोरिदम फंक्शन का कार्यान्वयन बार-बार फंक्शन को कॉल करता है। यह कॉल दो प्रकार का हो सकता है -

  • इटरेटिव (Iterative)
  • रिकर्सिव (Recursive)

इटरेटिव कॉल एक ही कोड ब्लॉक को कई बार लूप करना है।

रिकर्सिव कॉल उसी फंक्शन को बार-बार कॉल करना है।

इटरेटिव कॉल का उपयोग करके बाइनरी सर्च लागू करने का प्रोग्राम

उदाहरण

#include <stdio.h>

int iterativeBinarySearch(int array[], int start_index, int end_index, int element) {
    while (start_index <= end_index) {
        int middle = start_index + (end_index - start_index) / 2;
        if (array[middle] == element)
            return middle;
        if (array[middle] < element)
            start_index = middle + 1;
        else
            end_index = middle - 1;
    }
    return -1;
}

int main(void) {
    int array[] = {1, 4, 7, 9, 16, 56, 70};
    int n = 7;
    int element = 16;
    int found_index = iterativeBinarySearch(array, 0, n - 1, element);
    if (found_index == -1) {
        printf("Element not found in the array ");
    } else {
        printf("Element found at index : %d", found_index);
    }
    return 0;
}

आउटपुट

Element found at index : 4

रिकर्सिव कॉल का उपयोग करके बाइनरी सर्च लागू करने का प्रोग्राम

उदाहरण

#include <stdio.h>

int recursiveBinarySearch(int array[], int start_index, int end_index, int element) {
    if (end_index >= start_index) {
        int middle = start_index + (end_index - start_index) / 2;
        if (array[middle] == element)
            return middle;
        if (array[middle] > element)
            return recursiveBinarySearch(array, start_index, middle - 1, element);
        return recursiveBinarySearch(array, middle + 1, end_index, element);
    }
    return -1;
}

int main(void) {
    int array[] = {1, 4, 7, 9, 16, 56, 70};
    int n = 7;
    int element = 9;
    int found_index = recursiveBinarySearch(array, 0, n - 1, element);
    if (found_index == -1) {
        printf("Element not found in the array ");
    } else {
        printf("Element found at index : %d", found_index);
    }
    return 0;
}

आउटपुट

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

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

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो

  1. पायथन प्रोग्राम में लीनियर सर्च पायथन प्रोग्राम में लीनियर सर्च

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