两个有序数组的第n大数「建议收藏」

两个有序数组的第n大数

大家好,又见面了,我是全栈君。

两个有序数组,各自含有n个元素,求第n大的元素

1.顺序遍历两个数组,计数变量k统计出现的第k小元素,时间复杂度为O(n)

代码例如以下:

int getmid(int a[],int b[],int n)
{
	int k=0;
	int i=0,j=0;
	while(i<n&&j<n)
	{
		if(a[i]<b[j])
		{
			i++;
			k++;
			if(k==n)
				return a[i-1];
		}
		else 
		{
			j++;
			k++;
			if(k==n)
				return b[j-1];
		}
	}
}

2.二分的方法

    取A数组的中间元素mid1,取B数组的中间元素mid2,先比較这两个元素的大小。假设这两个元素相等,则直接返回A[mid1],假设A[mid1]<B[mid2],则mid1左側的元素能够去掉,B数组右側的元素能够去掉。这里还要区分数组元素个数为偶数奇数的情况,假设元素个数为偶数,则mid1元素也要去掉。假设A[mid1]<B[mid2]的情况与此类似。时间复杂度为O(logn)

# include <iostream>
# include <cstdlib>
using namespace std;

int mid(int a[],int b[],int n)
{
	int s1=0,e1=n-1;
	int s2=0,e2=n-1;
	int mid1=(s1+e1)/2;
	int mid2=(s2+e2)/2;
	while(s1!=e1||s2!=e2)
	{
		mid1=(s1+e1)/2;
		mid2=(s2+e2)/2;
		if(a[mid1]==b[mid2])
		{
			return a[mid1];
		}
		if(a[mid1]<b[mid2])
		{
			if((s1+e1)%2==0)
			{
				s1=mid1;
				e2=mid2;
			}
			else 
			{
				s1=mid1+1;
				e2=mid2;
			}
		}
		else
		{
			if((s1+e1)%2==0)
			{
				e1=mid1;
				s2=mid2;
			}
			else
			{
				e1=mid1;
				s2=mid2+1;
			}
		}
	}
	return a[s1]<b[s2]?

a[s1]:b[s2];}int main(){ int a[5]={2,4,5,6,9}; int b[5]={1,3,7,8,10}; cout<<mid(a,b,5)<<endl; system("pause"); return 0;}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115644.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java实现2048小游戏(直接拿走运行)

    Java实现2048小游戏(直接拿走运行)运行效果:1.项目结构2.代码BaseData接口packagecom.hsy.game;importjava.awt.*;publicinterfaceBaseData{FonttopicFont=newFont(“微软雅黑”,Font.BOLD,50);FontscoreFont=newFont(“微软雅黑”,Font.BOLD,28);FontnormalFont=newFont(“宋体”,Font.PLAI

    2022年7月15日
    15
  • 战地5的引擎是寒霜3_战地1引擎

    战地5的引擎是寒霜3_战地1引擎之前看过了zXr0带来的两篇寒霜2引擎技术解析么?《战地3》寒霜2引擎渲染流程图文详解http://pc.07073.com/bf3/frostbite/14097.html战地3寒霜2引擎详解:物件光照效果技术特性http://pc.07073.com/bf3/frostbite/14099.html如果你不看完下面篇章领取最终福利可就太可惜了…

    2025年6月6日
    0
  • 多重共线性VIF

    多重共线性VIF多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。方差膨胀系数(varianceinflationfactor,VIF)是衡量多元线性回归模型中复(多重)共线性严重程度的一种度量。它表示回归系数估计量的方差与假设自变量间不线性相关时方差相比的比值。多重共线性是指自变量之间存在线性相关关系,即一个自变量可以是其他一个或几个自变量的线性组合。检验方法主要有:容忍度(Tolerance)和方差膨胀系数(Varianceinflationfactor,

    2022年4月29日
    115
  • 解决问题__Visual Studio 光标变成方块

    解决问题__Visual Studio 光标变成方块

    2022年3月13日
    47
  • Latex公式换行且不加编号[通俗易懂]

    Latex公式换行且不加编号[通俗易懂]实现两个效果:1.公式可以换行,等号对齐2.公式后面没有系统的编号\begin{equation} \begin{aligned} E&=\frac{1}{2}\sum_{j=1}^{2}(z_j-f_j(x_k))^2\\ &=\frac{1}{2}(z_1-f_1(x_k))^2+\frac{1}{2}(z_2-f_2(x_k))^2\nonumber \end{aligned} \end{equation}实现的效果:注意点:首先要引入包。\usepack

    2022年6月12日
    125
  • 免费下载的音乐的6个网站,非常实用的软件_什么网站下载音乐是免费的

    免费下载的音乐的6个网站,非常实用的软件_什么网站下载音乐是免费的MyFreeMP3网址:http://tool.liumingye.cn/music/?page=homePage从标准音质,到无损音乐皆可免费下载,并且提供从封面到歌词的一站式服务。最大的优点是:可以下载有版权限制的歌曲,比如周杰伦的《稻香》陈奕迅的《好久不见》推荐指数⭐⭐⭐⭐咪咕音乐网页版网址:http://music.migu.cn/v3基本上所有的歌曲都可以下载,标清版的可以免费下载,其他版本的需要收费。咪咕音乐算是歌曲比较全,而且免费…

    2022年10月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号