私は、整数の束 (y) を取り、x 個の最大の整数を順番に返す必要があるプログラムに取り組んでいます。このコードはできるだけ高速にする必要がありますが、現時点では最適なアルゴリズムを持っているとは思いません。
これまでの私のアプローチ/アルゴリズムは、既に入力されている整数 (高から低) のソートされたリストを作成し、各項目が入ってくると処理することです。最初の x 項目については、ソートされた整数の配列を維持します。新しいアイテムが入るたびに、バイナリソートを使用して配置する場所を見つけます。(最初の x 個のアイテムを取り込んですばやく並べ替えることも考えていますが、これがより速いかどうかはわかりません)最大の整数の既にソートされたリスト (新しい整数がリストの末尾の整数より大きいかどうかを確認することによって) であり、大きい場合は、バイナリ検索を介してソートされたリストに追加し、末尾の整数を削除します。リスト。
どうすればこれを高速化できるか、またはおそらくこれよりも高速なまったく新しいアプローチについて誰かアドバイスがあればと思っていました。ありがとう。