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

C++ में सरणी में क्रॉस लाइन्स की गिनती


हमें विशिष्ट तत्वों की एक असॉर्टेड सरणी दी गई है। लक्ष्य सरणी के क्रमबद्ध होने के बाद क्रॉस लाइन्स ढूंढना है। क्रॉस लाइन्स को नीचे दिखाए अनुसार गिना जाता है -

  • Arr[]={ 1,2,4,3,5 } यहां 3 क्रॉस लाइन्स हैं जैसा कि नीचे दिखाया गया है

C++ में सरणी में क्रॉस लाइन्स की गिनती

  • Arr[]= { 1,2,3,4,5 }. कोई क्रॉस लाइन्स नहीं क्योंकि सरणी पहले से क्रमबद्ध है।

हम इंसर्शन सॉर्ट का उपयोग करके क्रॉस लाइन्स गिनेंगे जिसमें दाएं से एक तत्व को उसके बाएं क्रमबद्ध तत्वों में जोड़ा जाता है। हर बार जब तत्व क्रमबद्ध भाग में अपनी सही स्थिति में जुड़ता है, तो काउंट बढ़ाते हैं क्योंकि यह अपनी सही स्थिति में जाने के लिए उन सभी तत्वों को पार करता है जो इससे बड़े हैं।

आइए उदाहरणों से समझते हैं।

इनपुट - arr[]= {4,3,1,2 }

आउटपुट - सरणी में क्रॉस लाइन्स की संख्या: 5

व्याख्या - लाइन 4-4 और 3-3, लाइन्स 1-1 और 2-2 को पार करती हैं। कुल 4 क्रॉस लाइन्स।

4-4 और 3-3 दोनों एक दूसरे को एक बार पार करते हैं। कुल 4+1=5 क्रॉस लाइन्स।

इनपुट - arr[]= { 0,1,5,3 }

आउटपुट - सरणी में क्रॉस लाइन्स की संख्या: 1

व्याख्या - 5-5 और 3-3 दोनों एक दूसरे को एक बार पार करते हैं। कुल 1 क्रॉस लाइन।

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • हम विशिष्ट संख्याओं से आरंभ एक पूर्णांक सरणी arr[] लेते हैं।

  • फंक्शन insertionSort(int arr[], int n) एक सरणी और उसकी लंबाई को इनपुट के रूप में लेता है और क्रमबद्ध करने के बाद क्रॉस लाइन्स की गिनती परिणाम के रूप में लौटाता है।

  • प्रारंभिक क्रॉस लाइन्स की संख्या को 0 के रूप में लेते हैं। काउंट वेरिएबल का उपयोग किया जाता है।

  • पहला तत्व पहले से क्रमबद्ध है, इसलिए दूसरे तत्व से अंत तक (i=1 से i

  • अब उन सभी तत्वों को दाएं शिफ्ट करते हैं जो > item हैं और j>=0। प्रत्येक शिफ्ट के लिए काउंट बढ़ाते हैं क्योंकि ये सभी item द्वारा पार किए जाते हैं।

  • व्हाइल लूप के अंत में item को उसकी सही स्थिति arr[j+1] पर रखते हैं।

  • सभी तत्वों के लिए ऐसा करते हैं और उनके द्वारा पार किए गए तत्वों को गिनते हैं।

  • काउंट के मान को संभावित क्रॉस लाइन्स की संख्या के रूप में बढ़ाते हैं।

उदाहरण

#include <bits/stdc++.h> using namespace std; int insertionSort(int arr[], int n){ int count=0; int item; int j; for (int i = 1; i < n; i++){ item = arr[i]; j = i - 1; //क्रमबद्ध भाग में तत्व को सही स्थिति में डालें, तत्व द्वारा दाएं से सही स्थिति तक पार किए गए तत्वों की संख्या क्रॉस लाइन्स की गिनती है। while (j >= 0 && arr[j] > item){ arr[j + 1] = arr[j]; j = j - 1; count++; } arr[j + 1] = item; } return count; } int main(){ int arr[] = { 4,5,3,1,2}; int n = 5; cout<<"क्रॉस लाइन्स की संख्या: "<<insertionSort(arr, n); return 0; }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

क्रॉस लाइन्स की संख्या: 8

  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स

  1. - C++ प्रोग्राम: काउंटिंग सॉर्ट लागू करना

    काउंटिंग सॉर्ट एक स्थिर सॉर्टिंग तकनीक है, जिसका उपयोग छोटी संख्याओं की कुंजियों के अनुसार ऑब्जेक्ट्स को सॉर्ट करने के लिए किया जाता है। यह उन कुंजियों की संख्या गिनता है जिनके कुंजी मान समान हैं। यह सॉर्टिंग तकनीक तब कुशल होती है जब विभिन्न कुंजियों के बीच अंतर इतना बड़ा नहीं होता, अन्यथा यह स्पेस