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

यूनिफॉर्म बाइनरी सर्च करने के लिए C++ प्रोग्राम


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

एल्गोरिदम

शुरुआत    डेटा को सॉर्टेड तरीके से सरणी में निर्दिष्ट करें।    लुकअप सरणी की अधिकतम लंबाई की गणना करें और एक नई सरणी 'del' घोषित करें।    लुकअप सरणी में मान निर्दिष्ट करें जैसे n/2, n/4 और इसी तरह '0' तक, जहां n डेटा की लंबाई है।    UniBinarySearch() फ़ंक्शन कॉल करें।    'dl' सरणी के '0' इंडेक्स पर मान को मिड निर्दिष्ट करें और की की तुलना मिड इंडेक्स पर मान से करें।    यदि की बराबर है तो इंडेक्स मान को मेन में लौटाएं।    यदि 'dal' में इंडेक्स मान शून्य है तो एलिमेंट नहीं है, मेन में -1 लौटाएं।    यदि यह कम है, तो 'dal' सरणी में संग्रहीत अगले मान को घटाएं और पॉइंटर को 'dal' सरणी में अगले मान पर शिफ्ट करें। यदि यह अधिक है, तो 'dal' सरणी में संग्रहीत अगले मान को जोड़ें और पॉइंटर को 'dal' सरणी में अगले मान पर शिफ्ट करें। फ़ंक्शन द्वारा लौटाए गए इंडेक्स मान को प्रिंट करें और अधिक खोजने के लिए उपयोगकर्ता की पसंद पूछें। अंत

उदाहरण कोड

#include<iostream> using namespace std; void lookUpArray(int *a, int N) { int power = 1, i = 0; do { int half = power; power *= 2; a[i] = (N+half)/power; i++; } while (a[i-1] != 0); } int UniBinarySearch(int *a, int *dal, int key) { int i = d[0]-1, d = 0; flag: if (key == a[i]) return i; else if (dal[d] == 0) return -1; else { if (key < a[i]) { i -= dal[++d]; goto flag; } else { i += dal[++d]; goto flag; } } } int main(void) { int i, n = 10, d = 0, pow = 1, index; char ch; int a[10] = {2,6,7, 10, 12, 14, 12, 16,20, 26}; while(pow <= n) { pow *=2; d++; } int del[d]; lookUpArray(d, n); up: cout<<"\nखोजे जाने वाले एलिमेंट को दर्ज करें: "; cin>>n; index = UniBinarySearch(a, del, n); if (index == -1) cout<<"\nआइटम नहीं मिला"; else cout<<"\nआइटम "<<n<<" "<<index+1<<" स्थिति पर मिला"; cout<<"\n\n\tक्या आप और खोजना चाहते हैं...पसंद दर्ज करें (y/n)?"; cin>>ch; if(ch == 'y' || ch == 'Y') goto up; return 0; }

आउटपुट

खोजे जाने वाले एलिमेंट को दर्ज करें: 7 आइटम 7 स्थिति 3 पर मिला क्या आप और खोजना चाहते हैं...पसंद दर्ज करें (y/n)?y खोजे जाने वाले एलिमेंट को दर्ज करें: 21 आइटम नहीं मिला क्या आप और खोजना चाहते हैं...पसंद दर्ज करें (y/n)?

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

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

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

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

  1. - बाइनरी सर्च (रिकर्सिव) के लिए जावा प्रोग्राम

    जावा में रिकर्सिव बाइनरी सर्च के लिए प्रोग्राम निम्नलिखित है: उदाहरण public class Demo{ int rec_bin_search(int my_arr[], int left, int right, int x){ if (right >= left){ int mid = left + (right - left) / 2; if (my_arr[mid] == x) return mid