हमें पूर्णांकों की एक सरणी दी गई है। लक्ष्य एक सरणी के तत्वों की गिनती का पता लगाना है जो दिए गए मान K से कम या उसके बराबर हैं।
इनपुट
Arr[]= { 1, 2, 3, 14, 50, 69, 90 } K=12
आउटपुट
Numbers smaller or equal to K: 3
स्पष्टीकरण
Numbers 1,2,3 is smaller or equal to 12.
इनपुट
Arr[]= { 12, 13, 13, 13, 14, 50, 54, 100 } K=14
आउटपुट
Numbers smaller or equal to K: 5
स्पष्टीकरण
Numbers 12, 13, 14 are smaller or equal to 14.
निष्पक्ष दृष्टिकोण
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम पूर्णांक सरणी Arr[] और K.
लेते हैं -
फ़ंक्शन smallorEqual(int arr[],int k,int len) arr[] के उन तत्वों की संख्या लौटाता है जो K के बराबर या छोटे होते हैं
-
ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
लूप के लिए संख्याओं का अनुप्रस्थ सरणी। i=0 से i<लेन
-
अब प्रत्येक संख्या के लिए गिरफ्तारी [i], यदि यह <=k है, तो वृद्धि की गणना करें।
-
अंत में लूप काउंट की कुल संख्या होगी जो शर्त को पूरा करती है।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int smallorEqual(int arr[],int k,int len){ int count = 0; for (int i = 0; i < len; i++){ if(arr[i]<=k) { count++; } else { break; } } return count; } int main(){ int Arr[] = { 1,5,11,12,19,21,32,53,70,100 }; int K = 21; int Length= sizeof(Arr)/sizeof(Arr[0]); cout <<"Numbers smaller or equal to K: "<<smallorEqual(Arr,K,Length); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Numbers smaller or equal to K: 6
कुशल दृष्टिकोण (द्विआधारी खोज का उपयोग करना)
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम पूर्णांक सरणी Arr[] और K.
लेते हैं -
फंक्शन बाइनरीसर्च(int arr[],int k,int len) arr[] के उन तत्वों की गिनती लौटाता है जो K के बराबर या छोटे होते हैं
-
इंडेक्स लो =0, हाई =लेन -1 और मिड =(लो + हाई)/2;/p>
-
परिवर्तनीय अनुक्रमणिका लें =-1;
-
लूप के दौरान उपयोग करना, निम्न तक<=उच्च
-
गिरफ्तारी के मूल्य की जाँच करें [मध्य]। यदि यह <=k है। फिर सूचकांक =मध्य। नया निम्न=मध्य+1
-
नहीं तो नया उच्च=मध्य-1.
-
जबकि लूप इंडेक्स के अंत में अंतिम नंबर का इंडेक्स होगा<=k.
-
परिणाम के रूप में अनुक्रमणिका+1 लौटाएं क्योंकि सरणी अनुक्रमण 0 से प्रारंभ होता है और अनुक्रमणिका 0 से अनुक्रमणिका तक सभी संख्याएं k से कम होती हैं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int binarySearch(int arr[],int k,int len){ int low = 0; int high = len -1; int mid = (high+low)/2; int index = -1; while(low <= high){ mid =( low + high ) / 2; if(arr[mid] <= k){ index = mid; low = mid+1; } else{ high=mid-1; } } return (index+1); } int main(){ int Arr[] = { 1,5,11,12,19,21,32,53,70,100 }; int K = 21; int Length= sizeof(Arr)/sizeof(Arr[0]); cout <<"Numbers smaller or equal to K: "<<binarySearch(Arr,K,Length); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Numbers smaller or equal to K: 6