伊藤です

入力ストリームがランダムで、上位数個を拾うのでは
単純なバブルソートがいいのでは。

1.ソート済み配列に、数個詰める
2.入力ストリームより1個取り出し、最小値と比較
3.ソート済み配列 更新

データ処理が進むほど、最小値と比較の1回のみで終わります。
昇順ソート済み入力では最悪になります。

アルゴリズムの本では、クイックソート、中央値
関連の 上位Nを見つけるのがありますが。