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

क्रम में kth सबसे बड़ा तत्व खोजने के लिए C++ प्रोग्राम

इस कार्यक्रम में, हमें अनुक्रम से Kth सबसे बड़ा तत्व निकालने की आवश्यकता है। मैक्स-हीप का उपयोग करके समस्या के करीब पहुंचकर इस तकनीक की समय जटिलता में सुधार किया जा सकता है। इस कार्यक्रम की समय जटिलता O(n + k*log(n)) है।

एल्गोरिदम

Begin
   Send the max of the heap to the end of the sequence.
   Heapify the remaining sequence.
   Repeat the process for ‘k’ times.
   Print the final state of the array.
   Print the max from the heap extracted from kth iteration as a result.
End.

उदाहरण कोड

#include <iostream>
using namespace std;
void MaxHeapify(int a[], int i, int n) {
   int j, t;
   t = a[i];
   j = 2*i;
   while (j <= n) {
      if (j < n && a[j+1] > a[j])
      j = j+1;
      if (t > a[j])
      break;
      else if (t <= a[j]) {
         a[j/2] = a[j];
         j = 2*j;
      }
   }
   a[j/2] = t;
   return;
}
void Build_MaxHeapify(int a[], int n) {
   int i;
   for(i = n/2; i >= 1; i--)
   MaxHeapify(a, i, n);
}
int main() {
   int n, i, temp, k;
      cout<<"\nEnter the number of data element to be sorted: ";
      cin>>n;
      n++;
      int arr[n];
      for(i = 1; i < n; i++) {
         cout<<"Enter element "<<i<<": ";
         cin>>arr[i];
      }
     cout<<"\nEnter the k value: ";
     cin>>k;
     Build_MaxHeapify(arr, n-1);
     for(i = n-1; i >= n-k; i--) {
        temp = arr[i];
        arr[i] = arr[1];
        arr[1] = temp;
        MaxHeapify(arr, 1, i - 1);
    }
    cout<<"\nAfter max-heapify the given array "<<k<<" times the array state is: ";
    for(i = 1; i < n; i++)
      cout<<"->"<<arr[i];
    cout<<"\n\nThe "<<k<<"th largest element is: "<<arr[n-k];
    return 0;
}

आउटपुट

Enter the number of data element to be sorted: 5
Enter element 1: 20
Enter element 2: 10
Enter element 3: 30
Enter element 4: 70
Enter element 5: 60
Enter the k value: 2
After max-heapify the given array 2 times the array state is: ->30->20->10->60->70
The 2th largest element is: 60

  1. C++ प्रोग्राम तीन नंबरों में सबसे बड़ी संख्या खोजने के लिए

    यदि कथन का कई बार उपयोग करके तीन संख्याओं में से सबसे बड़ी संख्या ज्ञात की जा सकती है। यह एक कार्यक्रम में इस प्रकार दिया गया है - उदाहरण #include <iostream> using namespace std; int main() {    int a = 5 ,b = 1 ,c = 9;    if(a>b) {       if(a>c)  

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें सरणी के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूटफोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके सबसे बड़े तत्व की गणना करते हैं और तत्व प्राप्त करते हैं।

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें सरणी में सबसे बड़ा तत्व खोजने की जरूरत है। दृष्टिकोण हम अधिकतम को पहले तत्व के रूप में प्रारंभ करते हैं। इसके बाद, हम दिए गए सरणी को दूसरे तत्व से अ