C/C++教程

C++归并排序并输出第k小的元素

本文主要是介绍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小的元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!