两个有序数组的中位数

  • Post author:
  • Post category:其他


import java.util.Scanner;

public class lanqiao {
	
	public static void main(String[] args) {
		int n1,n2,m=0,c1=0,c2=0;
		Scanner scanner =new Scanner(System.in);
		System.out.print("第一个数组的个数为:");
		n1=scanner .nextInt();
		System.out.print("第二个数组的个数为:");
		n2=scanner .nextInt();
		int[] a1=new int[n1];
		int[] a2=new int[n2];
		int[] c=new int[n1+n2];
		System.out.print("第一组数据:");
		for(int i=0;i<n1;i++)
		{int j=scanner .nextInt();
		a1[i]=j;}
		System.out.print("第二组数据:");
		for(int i=0;i<n2;i++)
		{int j=scanner .nextInt();
		a2[i]=j;}
		while(m<(n1+n2))
		{if(c1<n1&&c2<n2)
			{if(a1[c1]<=a2[c2])
				{c[m]=a1[c1];
				m++;
				c1++;}
			else{c[m]=a2[c2];
			m++;
			c2++;}
			}
		if(c1>=n1||c2>=n2)
			break;}
		if(c1>=n1)
		{for(;c2<n2;c2++)
			{c[m]=a2[c2];
			m++;}}
		else
		{for(;c1<n1;c1++)
			{c[m]=a1[c1];
			m++;}}
		if((n1+n2)%2==0)
		{double a=(c[(n1+n2)/2-1]+c[(n1+n2)/2])/2.0;
			System.out.printf("%.5f",a);}
		else 
			{
			double a=c[(n1+n2)/2];
			System.out.printf("%.5f",a);}
			}
		
		
	}



版权声明:本文为weixin_46512272原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。