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

C++ प्रोग्राम, S की माध्यिका के निकटतम k संख्याएँ ज्ञात करने के लिए, जहाँ S, n संख्याओं का समुच्चय है

यह एक C++ प्रोग्राम है जो K संख्याओं को S की माध्यिका के सबसे निकट पाता है, जहाँ S, n संख्याओं का एक समूह है।

एल्गोरिदम

Begin
   function partition() for partitioning the array on the basis of values at high as pivot value:
   Arguments:
      a[]=an array.
      l=low
   H=high
   Body of the function:
   Declare variables pivot, in, i
   Initialize in = l
   Set pivot = h
   For i=l to h-1
      if(a[i] < a[pivot])
         swap a[i] and a[in])
      increment in.
      swap a[pivot] and a[in]
   return in.
End
Begin
   function QuickSort() to implement quicksort algorithm to sort the data elements:
   Arguments:
      a[]=an array.
      l=low
      h=high
   Body of the function:
   declare pindex
   if(l < h)
      index = Partition(a, l, h)
      QuickSort(a, l, pindex-1);
      QuickSort(a, pindex+1, h);
   Return 0.
End
Begin
   Function main(),
   If the number of the data element are odd,
      Assign the middle index to low and the index next to it to high and calculate median.
      Run a loop for k times and print the element which his closer to the median.
   Else
      The median will be an average of two middle values .
      Run a loop for k times and print the element which his closer to the median.
End

उदाहरण

#include<iostream>
using namespace std;
void swap(int *x, int *y) { //swapping two values 
   int tmp;
   tmp = *x;
   *x = *y;
   *y = tmp;
}
int Partition(int a[], int l, int h) {
   int pivot, in, i;
   in = l;
   pivot = h;
   for(i=l; i < h; i++) {
      if(a[i] < a[pivot]) {
         swap(&a[i], &a[in]);
         in++;
      }
   }
   swap(&a[pivot], &a[in]);
   return in;
}
int QuickSort(int a[], int l, int h) {
   int pindex;
   if(l < h) {
      pindex = Partition(a, l, h);
      QuickSort(a, l, pindex-1);
      QuickSort(a, pindex+1, h);
   }
   return 0;
}
int main() {
   int n, i, h, l, k;
   double d1,d2, median;
   cout<<"Enter the number of element in dataset: ";
   cin>>n;
   int a[n];
   for(i = 0; i < n; i++) {
      cout<<"\nEnter "<<i+1<<" element: ";
      cin>>a[i];
   }
   cout<<"\nEnter the number of element nearest to the median required: ";
   cin>>k;
   QuickSort(a, 0, n-1);
   cout<<"The K element nearest to the median are: ";
   if(n%2 == 1) {
      median = a[n/2];
      h = n/2+1;
      l= n/2;
      while(k > 0) {
         if((median-a[l] <= a[h]-median) && l >= 0) {
            cout<<" "<<a[l];
            l--;
            k--;
         } else if((median-a[l] > a[h]-median) && h <= n-1) {
            cout<<" "<<a[h];
            h++;
            k--;
         }
      }
   } else {
      d1 = a[n/2];
      d2 = a[n/2-1];
      median = (d1+d2)/2;
      h = n/2;
      l = n/2-1;
      while(k > 0) {
         d1 = a[l];
         d2 = a[h];
         if((median-d2 <= d1-median) && l >= 0) {
            cout<<" "<<a[l];
            l--;
            k--;
         } else if((median-d2 > d1-median) && h <= n-1) {
            cout<<" "<<a[h];
            h++;
            k--;
         }
      }
   }
   return 0;
}

आउटपुट

Enter the number of element in dataset: 7
Enter 1 element: 7
Enter 2 element: 6
Enter 3 element: 5
Enter 4 element: 4
Enter 5 element: 3
Enter 6 element: 2
Enter 7 element: 1
Enter the number of element nearest to the median required: 2
The K element nearest to the median are: 4 3

  1. सी ++ प्रोग्राम संख्याओं की एक सरणी के उत्पाद में पहला अंक खोजने के लिए

    इस लेख में, हम दिए गए सरणी के तत्वों के उत्पाद में पहला अंक खोजने के लिए एक कार्यक्रम पर चर्चा करेंगे। उदाहरण के लिए, मान लें कि हमें एक सरणी दी गई है। arr = {12, 5, 16} तब इन तत्वों का गुणनफल 12*5*16 =960 होगा। इसलिए, परिणाम यानी इस मामले में उत्पाद का पहला अंक 9 होगा। उदाहरण #include <bits/st

  1. C++ प्रोग्राम डिसजॉइंट सेट डेटा स्ट्रक्चर को लागू करने के लिए

    डिसजॉइंट सेट मूल रूप से सेट के समूह के रूप में होता है जहां कोई भी आइटम एक से अधिक सेट में नहीं हो सकता है। यह संघ का समर्थन करता है और सबसेट पर संचालन ढूंढता है। ढूंढें (): इसका उपयोग यह पता लगाने के लिए किया जाता है कि कोई विशेष तत्व किस उपसमुच्चय में है और उस विशेष सेट का प्रतिनिधि देता है। संघ

  1. तत्वों के माध्यिका को खोजने के लिए C++ प्रोग्राम जहां तत्वों को 2 अलग-अलग सरणियों में संग्रहीत किया जाता है

    हम तत्वों के माध्यिका को खोजने के लिए एक C++ प्रोग्राम पर विचार करेंगे जहां तत्वों को 2 अलग-अलग सरणियों में संग्रहीत किया जाता है। एल्गोरिदम Begin    Function Median() has Two arrays a1[], a2[] and n = numbers of elements of the array as arguments:    Initialize i and j by 0, and