首页 > 代码库 > poj 4088:集合运算

poj 4088:集合运算

poj 4088:集合运算


题目:(至于4089,那个问题做过,使用归并思想,所以没有写)

描述

小张需要从一批数量庞大的正整数中挑选出第k小的数,因为数据量太庞大,挑选起来很费劲,希望你能编程帮他进行挑选。

输入
第一行第一个是数据的个数n(10<=n<=106),第二个是需要挑选出的数据的序号k(1<=k<=105),n和k以空格分隔;
第二行以后是n个数据T(1<=T<=109),数据之间以空格或者换行符分隔。
输出
第k小数(如果有相同大小的也进行排序,例如对1,2,3,8,8,第4小的为8,第5小的也为8)。
样例输入
10 5
1  3  8 20 2 
9 10 12  8 9 
样例输出
8

解题方案
借用于快速排序思想,查找第K小元素

代码

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

void main_solution();
void read_data( int *& data,int &n,int &k );
int min_k(int *data,int s,int e,int k);


int main()
{
	main_solution();
	system("pause");
	return 0;
}


void read_data( int *& data,int &n,int &k )
{
	ifstream reader;
	reader.open( "data.txt" );
	reader>>n;
	reader>>k;
	data = http://www.mamicode.com/new int[n];>


poj 4088:集合运算