Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,900 questions

51,831 answers

573 users

How to get the median of two sorted arrays in C#

2 Answers

0 votes
using System;

public class Program
{
	 private static double findMedianOfTwoSortedArrays(int[] arr1, int[] arr2) {
		int size1 = arr1.Length;
		int size2 = arr2.Length;

		int[] merged = new int[arr1.Length + arr2.Length];

		for (int i = 0; i < size1; i++) {
			merged[i] = arr1[i];
		}

		for (int i = 0; i < size2; i++) {
			merged[i + arr1.Length] = arr2[i];
		}

		Array.Sort(merged);

		int total = size1 + size2;
		double median;
		
		if (total % 2 == 0) {
			int mid1 = merged[(total - 1) / 2];
			int mid2 = merged[total / 2];
			median = (double)(mid1 + mid2) / 2.0;
		}
		else {
			median = (double)merged[total / 2];
		}

		return median;
	 }
	public static void Main(string[] args)
	{
		int[] arr1 = new int[] {1, 3, 5};
		int[] arr2 = new int[] {2, 4, 6};

		double median = findMedianOfTwoSortedArrays(arr1, arr2);

		Console.Write("Median: " + median);
	}
}




/*
run:
   
Median: 3.5
   
*/

 



answered Jul 19, 2023 by avibootz
0 votes
using System;

public class Program
{
	 private static double findMedianOfTwoSortedArrays(int[] arr1, int[] arr2) {
		int size1 = arr1.Length;
		int size2 = arr2.Length;
		int i = 0, j = 0;
		int mid1 = -1, mid2 = -1;

		if ((size2 + size1) % 2 == 1) {
			for (int k = 0; k <= (size1 + size2) / 2; k++) {
				if (i != size1 && j != size2) {
					mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
				}
				else if (i < size1)	{
					mid1 = arr1[i++];
				}
				else {
					mid1 = arr2[j++];
				}
			}
			return mid1;
		}
		else {
			for (int k = 0; k <= (size1 + size2) / 2; k++) {
				mid2 = mid1;
				if (i != size1 && j != size2) {
					mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
				}
				else if (i < size1) {
					mid1 = arr1[i++];
				}
				else {
					mid1 = arr2[j++];
				}
			}
			return (double)(mid1 + mid2) / 2;
		}
	}
	public static void Main(string[] args)
	{
		int[] arr1 = new int[] {1, 3, 5};
		int[] arr2 = new int[] {2, 4, 6};

		double median = findMedianOfTwoSortedArrays(arr1, arr2);

		Console.Write("Median: " + median);
	}
}




/*
run:
   
Median: 3.5
   
*/



 



answered Jul 19, 2023 by avibootz
...