2016-09-15 8 views
1

私は買い/売り注文リストを含む制限オーダーブックを作成したいと考えています。買い注文リストでは、最も高い買い値はリストの最初にあり、売り注文リストでは最も低い売り値がリストの最初にあるはずです。新しく注文する場合は、リストに挿入するための適切な場所を取得したいと考えています。リミットオーダーブック:購入/売りオーダーリストを維持するためのデータ構造

現在、私は挿入する線形検索を使用していますが、それは順序数百万人のための非常に高いですO(n)の時間がかかります。

O(log n)以下の時間でソートされたリンクリストにノードを挿入できるデータ構造はありますか?

+0

適切なデータ構造は[優先キュー](https://en.wikipedia.org/wiki/Priority_queue)です。 – user3386109

+2

上部に単一の値(最小または最大)を維持することだけが心配されているので、最大ヒープおよび最小ヒープを使用してください。 – sameerkn

答えて

0

ノードをO(log n)以下の時間でソートされたリンクリストに挿入しますか?

これは不可能です。 (一度にのみminまたはmaxをしたい場合)は、データを保存するために二分探索木または分ヒープを使用することができますしかし

。バランスの取れたバイナリ検索ツリーを使用すると、データを並べ替えて保存するだけでなく、O(log n)時間に挿入/削除することができます。

+0

ヒープを使用すると、ダイナミックアレイの償却コストが増加します。 – kadsank

関連する問題