हमें पूर्णांकों की एक सरणी दी गई है। लक्ष्य सरणी के उन तत्वों की संख्या ढूंढना है जो दिए गए मान K से कम या बराबर हैं।
इनपुट
Arr[]= { 1, 2, 3, 14, 50, 69, 90 } K=12 आउटपुट
K से छोटे या बराबर संख्याएं: 3
व्याख्या
संख्याएं 1,2,3, 12 से छोटी या बराबर हैं।
इनपुट
Arr[]= { 12, 13, 13, 13, 14, 50, 54, 100 } K=14 आउटपुट
K से छोटे या बराबर संख्याएं: 5
व्याख्या
संख्याएं 12, 13, 14, 14 से छोटी या बराबर हैं।
सामान्य दृष्टिकोण
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम पूर्णांक सरणी Arr[] और K लेते हैं।
फ़ंक्शन smallorEqual(int arr[],int k,int len) arr[] के उन तत्वों की संख्या लौटाता है जो K से छोटे या बराबर हैं।
प्रारंभिक चर count को 0 से आरंभ करें ऐसी संख्याओं के लिए।
फॉर लूप का उपयोग करके संख्याओं की सरणी को पार करें। i=0 से i
अब प्रत्येक संख्या arr[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 <<"K से छोटे या बराबर संख्याएं: "<<smallorEqual(Arr,K,Length); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
K से छोटे या बराबर संख्याएं: 6
कुशल दृष्टिकोण (बाइनरी खोज का उपयोग करके)
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम पूर्णांक सरणी Arr[] और K लेते हैं।
फ़ंक्शन binarySearch(int arr[],int k,int len) arr[] के उन तत्वों की संख्या लौटाता है जो K से छोटे या बराबर हैं।
इंडेक्स low=0, high=len-1 और mid=(low+high)/2 लें।
चर index=-1 लें।
व्हाइल लूप का उपयोग करके, जब तक low<=high
arr[mid] का मान जांचें। यदि यह <= k है। तो index=mid। नया low=mid+1
अन्यथा नया high=mid-1।
व्हाइल लूप के अंत में index, अंतिम संख्या <=k का इंडेक्स होगा।
index+1 को परिणाम के रूप में लौटाएं क्योंकि सरणी इंडेक्सिंग 0 से शुरू होती है और इंडेक्स 0 से index तक सभी संख्याएं 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 <<"K से छोटे या बराबर संख्याएं: "<<binarySearch(Arr,K,Length); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
K से छोटे या बराबर संख्याएं: 6