归并为什么也T了??
查看原帖
归并为什么也T了??
230804
Durancer楼主2020/9/30 10:47
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int n,a[100009],num[100009];
void Sort(int ls,int lr,int rs,int rr)
{
	int p1=ls,p2=rs,p=ls-1;
	while(p1<=lr&&p2<=rr)
	{
		if(a[p1]<=a[p2])
		{
			num[++p]=a[p1];
			p1++;
		}
		if(a[p1]>a[p2])
		{
			num[++p]=a[p2];
			p2++;
		}
	}
	while(p1<=lr)
	{
		num[++p]=a[p1];
		p1++;
	}
	while(p2<=rr)
	{
		num[++p]=a[p2];
		p2++;
	}
	for(int i=ls;i<=rr;i++)
	{
		a[i]=num[i];
	}
}
void search(int x,int y)
{
	if(x==y)
	return;
	int mid=(x+y)>>1;
	search(x,mid);
	search(mid+1,y);
	Sort(x,mid,mid+1,y);
}
int main()
{
	int k;
	cin>>n>>k;
	for(int i=1;i<=n;++i)
	{
		cin>>a[i];
	}
	search(1,n);
	cout<<a[k+1];
}
2020/9/30 10:47
加载中...