C-Programm, um den Median von zwei sortierten Arrays unterschiedlicher Größe zu finden

C-Programm, um den Median von zwei sortierten Arrays unterschiedlicher Größe zu finden

In diesem Blogbeitrag lernen wir, wie man ein C-Programm schreibt, um den Median von zwei sortierten Arrays unterschiedlicher Größe zu finden? Hier schreiben wir also das C-Programm, um den Median von zwei sortierten Arrays unterschiedlicher Größe zu finden. Wir werden auch sehen, wie man den Median von zwei gegebenen sortierten Arrays arr1 und arr2 der Größe N1 und N2 mit C-Programmierung anzeigt.

Beispiel

Input: 

arr1[] = {-5, 3, 6, 12, 15};
arr2[] = {-12, -10, -6, -3, 4, 10};


Output: The median is 3.


Explanation:

The merged array is :
ar3[] = {-12, -10, -6, -5 , -3,
          3, 4, 6, 10, 12, 15};
		  
So the median of the merged array is 3

Aber bevor ich mit der Programmierung beginne, möchte ich den Median erklären. Grundsätzlich ist Median ein Element, das das Array in zwei Teile links und rechts teilt. Sehen wir uns also an, wie wir den Median eines Arrays ermitteln können.

1. Ordnen Sie die Array-Elemente vom kleinsten zum größten an.

2. Wenn die Anzahl der Elemente im Array ungerade ist, ist der Median das mittlere Element in der Liste.

Beispiel

//Given input integer sorted array
Input: arr[] = {0, 1, 2, 3, 4};

Output: 2

Explanation: There is an odd number of elements (5), 
so the median is the middle element that is 2

Im Allgemeinen gilt für ein Array aus n Elementen, wobei n eine ungerade Zahl ist, der Median:

ArrayMedian =>  (n+1)/2  

3. Wenn die Anzahl der Elemente im Array gerade ist, ist der Median der Durchschnitt der beiden mittleren Elemente.

Beispiel

//Given input integer sorted array
Input: arr[] = {0, 1, 2, 3};

Output: (1+2)/2 = > 1.5

Explanation: The median is the mean of the middle two numbers 1 and 2.

Im Allgemeinen gilt für ein Array aus n Elementen, wobei n eine gerade Zahl ist, der Median:

ArrayMedian =  (m1+m2)/2 Element, wobei m1 und m2 zwei mittlere Zahlen sind.

Wenn Sie mehr über die Sprache C erfahren möchten, können Sie diesen Kurs besuchen, kostenlose Testversion verfügbar.

Holen Sie sich Ihre kostenlose Testversion

C-Programm, um den Median von zwei sortierten Arrays unterschiedlicher Größe zu finden

#include <stdio.h>
#include <stdlib.h>

//Calculate array size
#define ARRAY_SIZE(a)  sizeof(a)/sizeof(a[0])


//return median of two sorted array of different size
int findMedianTwoSortedArray(int arr1[], int arr2[], int N1, int N2)
{
    int arr1Index = 0;
    int arr2Index = 0;
    int cnt = 0;
    int median1 = -1, median2 = -1, medianOfArr1Arr2;

    //if (N1+N2) is odd
    if((N2 + N1) % 2 == 1)
    {
        for (cnt = 0; cnt <= (N1 + N2)/2; cnt++)
        {
            if(arr1Index != N1 && arr2Index != N2)
            {
                median1 = (arr1[arr1Index] > arr2[arr2Index]) ? arr2[arr2Index++] : arr1[arr1Index++];
            }
            else if(arr1Index < N1)
            {
                median1 = arr1[arr1Index++];
            }
            // for case when arr2Index < N2,
            else
            {
                median1 = arr2[arr2Index++];
            }
        }
        medianOfArr1Arr2 = median1;
    }
    else
    {
        //if N1+N2 is even
        for (cnt = 0; cnt <= (N1 + N2)/2; cnt++)
        {
            median2 = median1;
            if(arr1Index != N1 && arr2Index != N2)
            {
                median1 = (arr1[arr1Index] > arr2[arr2Index]) ? arr2[arr2Index++] : arr1[arr1Index++];
            }
            else if(arr1Index < N1)
            {
                median1 = arr1[arr1Index++];
            }
            // for case when arr2Index < N2,
            else
            {
                median1 = arr1[arr2Index++];
            }
        }
        medianOfArr1Arr2 = (median1 + median2)/2;
    }

    return medianOfArr1Arr2;
}


int main()
{
    int arr1[] = {-5, 3, 6, 12, 15};
    int arr2[] = {-12, -10, -6, -3, 4, 10};

    const int N1 = ARRAY_SIZE(arr1);
    const int N2 = ARRAY_SIZE(arr2);

    printf("Median is %d", findMedianTwoSortedArray(arr1, arr2, N1, N2));


    return 0;
}

Empfohlene Artikel für Sie:

  • Das beste Geschenk für Programmierer.
  • Beste elektronische Kits für Programmierer.
  • C-Programm zum Ermitteln der Länge der längsten aufeinanderfolgenden Elementsequenz aus dem gegebenen unsortierten Array von Ganzzahlen.
  • C-Programm, um die erste und letzte Position eines Elements in einem sortierten Array zu finden
  • Schreiben Sie ein C-Programm, um die fehlende Zahl in einem gegebenen Integer-Array von 1 bis n zu finden
  • C-Programm, um das beliebteste Element in einem Array zu finden
  • Finde das größte und kleinste Element in einem Array mit C-Programmierung.
  • C-Programm, um sogar vorkommende Elemente in einem Array mit begrenztem Bereich zu finden
  • Finde die Summe aller Sub-Arrays eines gegebenen Arrays.
  • C-Programm zum Trennen gerader und ungerader Zahlen
  • Finde ein Element in einem Array, bei dem die Summe des linken Arrays gleich der Summe des rechten Arrays ist.
  • C-Programm, um die Anzahl der geraden und ungeraden Elemente im Array zu finden.
  • C-Programm schreiben, um die Summe von Array-Elementen zu finden.
  • C-Programm, um ungerade vorkommende Elemente in einem Array mit begrenztem Bereich zu finden
  • Finde die Summe von Array-Elementen mit Rekursion
  • C-Programm zum Umkehren der Elemente eines Arrays
  • C-Programm zum Finden des maximalen und minimalen Elements im Array
  • Berechnen Sie die Größe eines Arrays in ohne sizeof in C
  • Wie erstelle ich ein dynamisches Array in C?
  • Wie greife ich auf 2D-Arrays in C zu?
  • Dangling-, Void-, Null- und Wild-Zeiger