4.力扣题目_寻找两个正序数组的中位数

寻找两个正序数组的中位数

给定两个大小分别为 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;
       }

}

猜你喜欢

转载自blog.csdn.net/GoodCooking/article/details/130650438