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

बाइनरी और अनुक्रमिक खोज की तुलना करने के लिए C++ प्रोग्राम


बाइनरी सर्च और अनुक्रमिक या लिनियर सर्च दोनों का उपयोग कंप्यूटर प्रोग्रामिंग में एलिमेंट खोजने के लिए किया जाता है। बाइनरी सर्च की समय जटिलता O(log n) है और अनुक्रमिक खोज की O(n) है।

एल्गोरिदम

शुरुआत    बाइनरी सर्च के लिए एल्गोरिदम:    BinarySearch() फ़ंक्शन 'arr' डेटा की सरणी और 'n' मानों की संख्या, प्रारंभ और अंत इंडेक्स, इटरेशन काउंट और खोजे जाने वाले एलिमेंट के साथ आर्गुमेंट सूची में।    इटरेशन काउंटर बढ़ाएं और आइटम मान की तुलना a[mid] से करें।    यदि आइटम < a[mid] तो पहला आधा चुनें अन्यथा आगे बढ़ने के लिए दूसरा आधा चुनें।    सफल खोज पर इटरेशन मान लौटाएं। अंत

उदाहरण कोड

#include<iostream> using namespace std; int BinarySearch(int a[], int start, int end, int item, int iter) {    int i, mid;    cout<<"\nइटरेशन "<<iter+1;    iter++;    mid = start + (end-start+1)/2;    if(item > a[end] || item < a[start] || mid == end) {       cout<<"\nनहीं मिला";       return iter;    } else if(item == a[mid]) {       cout<<"\n आइटम "<<mid<<" इंडेक्स पर मिला।";       return iter;    } else if(item == a[start]) {       cout<<"\n आइटम "<<start<<" इंडेक्स पर मिला।";       return iter;    } else if(item == a[end]) {       cout<<"\n आइटम "<<end<<" इंडेक्स पर मिला।";       return iter;    } else if(item > a[mid])          BinarySearch(a, mid, 9, item, iter);       else          BinarySearch(a, start, mid, item, iter);    }    int LinearSearch(int a[], int n, int item) {       int i;       for(i = 0; i < n; i++) {          cout<<"\nइटरेशन "<<i+1;          if(a[i] == item) {             cout<<"\n आइटम "<<i<<" इंडेक्स पर मिला।";          return i+1;       }    }    cout<<"\nनहीं मिला"; } int main() {    int n, i, B, L, a[10]={2, 7, 14, 24, 26, 35, 38, 41, 49, 53};    cout<<"\nखोजे जाने वाले एलिमेंट को दर्ज करें: ";    cin>>n;    cout<<"\n\n\t\t\tबाइनरी सर्च :";    B = BinarySearch(a, 0, 9, n, 0);    cout<<"\n\n\t\t\tलिनियर सर्च :";    L = LinearSearch(a, 10, n);    if(L > B)       cout<<"\n\nइस खोज के लिए बाइनरी सर्च बेहतर है।";    else if(L < B)       cout<<"\n\nइस खोज के लिए लिनियर सर्च बेहतर है।";    else       cout<<"\n\nइस खोज के लिए दोनों समान रूप से कुशल हैं।";    return 0; }

आउटपुट

खोजे जाने वाले एलिमेंट को दर्ज करें: 7 बाइनरी सर्च : इटरेशन 1 इटरेशन 2 इटरेशन 3 इटरेशन 4 आइटम 1 इंडेक्स पर मिला। लिनियर सर्च : इटरेशन 1 इटरेशन 2 आइटम 1 इंडेक्स पर मिला। इस खोज के लिए लिनियर सर्च बेहतर है। खोजे जाने वाले एलिमेंट को दर्ज करें: 53 बाइनरी सर्च : इटरेशन 1 आइटम 9 इंडेक्स पर मिला। लिनियर सर्च : इटरेशन 1 इटरेशन 2 इटरेशन 3 इटरेशन 4 इटरेशन 5 इटरेशन 6 इटरेशन 7 इटरेशन 8 इटरेशन 9 इटरेशन 10 आइटम 9 इंडेक्स पर मिला। इस खोज के लिए बाइनरी सर्च बेहतर है। खोजे जाने वाले एलिमेंट को दर्ज करें: 1 बाइनरी सर्च : इटरेशन 1 नहीं मिला लिनियर सर्च : इटरेशन 1 इटरेशन 2 इटरेशन 3 इटरेशन 4 इटरेशन 5 इटरेशन 6 इटरेशन 7 इटरेशन 8 इटरेशन 9 इटरेशन 10 नहीं मिला इस खोज के लिए बाइनरी सर्च बेहतर है।

  1. C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण C++ में बाइनरी ट्री को बाइनरी सर्च ट्री में रूपांतरण

    एक बाइनरी ट्री एक विशेष प्रकार का ट्री है जिसमें ट्री का प्रत्येक नोड अधिकतम दो चाइल्ड नोड रख सकता है। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के नाम से जाना जाता है। एक साधारण बाइनरी ट्री है - बाइनरी सर्च ट्री (BST) एक विशेष प्रकार का ट्री है जो निम्नलिखित नियमों का पालन करता है - बाएं चाइ

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

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

  1. C++ प्रोग्राम: बाइनरी सर्च ट्री पर लेफ्ट रोटेशन करना C++ प्रोग्राम: बाइनरी सर्च ट्री पर लेफ्ट रोटेशन करना

    एक बाइनरी सर्च ट्री एक सॉर्टेड बाइनरी ट्री है जिसमें सभी नोड्स में निम्नलिखित दो गुण होते हैं - एक नोड का राइट सब-ट्री उसके पैरेंट नोड की कुंजी से अधिक सभी कुंजियों को रखता है। एक नोड का लेफ्ट सब-ट्री उसके पैरेंट नोड की कुंजी से कम सभी कुंजियों को रखता है। प्रत्येक नोड में दो से अधिक चाइल्ड नहीं हो