本文主要是介绍C++归并排序并输出第k小的元素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
//Author:PanDaoxi
#include <iostream>
using namespace std;
const int maxn=101;
int a[maxn],r[maxn];
void merge(int left,int right){
{
if(left==right) return;
int mid=(left+right)/2;
merge(left,mid);
merge(mid+1,right);
int i=left,j=mid+1,k=left;
while(i<=mid&&j<=right){
if(a[i]<a[j]) r[k++]=a[i++];
else r[k++]=a[j++];
}
while(i<=mid){
r[k++]=a[i++];
}
while(j<=right){
r[k++]=a[j++];
}
}
for(int i=left;i<=right;i++){
a[i]=r[i];
}
return;
}
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
merge(1,n);
cout<<a[k]<<" ";
return 0;
}
这篇关于C++归并排序并输出第k小的元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!