寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
public class Solution {
public double FindMedianSortedArrays(int[] nums1, int[] nums2)
{
//list合并
int a = nums1.Length;
int b = nums2.Length;
int[] intarr_ab = new int[a + b];
for (int i = 0; i < a; i++)
{
intarr_ab[i] = nums1[i];
}
for (int i = 0; i < b; i++)
{
intarr_ab[a + i] = nums2[i];
}
intarr_ab = SpitBubbles(intarr_ab);
//list总数的判定
if (intarr_ab.Length % 2 == 0)//是偶数
{
return (intarr_ab[(intarr_ab.Length / 2) - 1] + intarr_ab[(intarr_ab.Length / 2)]) / 2.0d;
}
else //是奇数
{
return (intarr_ab[intarr_ab.Length / 2]);
}
}
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="num12add"></param>
/// <returns></returns>
private static int[] SpitBubbles(int[] num12add)
{
for (int i = 0; i < num12add.Length - 1; i++)
{
for (int j = 0; j < num12add.Length - 1 - i; j++)
{
if (num12add[j] > num12add[j + 1])
{
int temp = num12add[j];
num12add[j] = num12add[j + 1];
num12add[j + 1] = temp;
}
}
}
return num12add;
}
}