您的位置:首页 > 产品设计 > UI/UE

利用priority_queue实现top K

2016-04-19 11:53 459 查看
#include <bits/stdc++.h>
using namespace std;
class fix_priority_queue {
int						max_size;
priority_queue <int, vector<int>, greater<int> >q;
public:
fix_priority_queue( int max_size )
{
this->max_size = max_size;
}

void add( int x )
{
if ( q.size() < max_size )
{
q.push( x );
}else{
int a = q.top();
if ( a < x )
{
q.pop();
q.push( x );
}
}
}

void pop()
{
q.pop();
}

int top()
{
return(q.top() );
}

bool empty()
{
return(q.empty() );
}
};
int main()
{
fix_priority_queue q( 5 );

srand( time( 0 ) );
for ( int i = 0; i != 10; ++i )
{
int a = rand();
printf( "%d ", a );
q.add( a );
}
printf( "\n" );
while ( !q.empty() )
{
printf( "%d ", q.top() );
q.pop();
}
return(0);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: