2009-06-08 15 views
3

拡張メソッド(LINQ)を使用しません。私は残念ながら.NET 2.0に制限されています。 (ええ、それは吸う)Generic SortedList、検索キーよりも大きい最初の要素のインデックスを検索する方法は?

O(log(n))の近くを探しています。

ありがとうございました。

+0

私は宿題を嗅ぐ。 – dss539

+2

dss539:StackOverflow FAQを読んでください。宿題を無視してはならないと明言しています。 – TheTXI

+0

私はそれがホーマーワークでしたが、いいえ、実際の仕事はここです。 – Newbie

答えて

5

特定のキーよりも大きい最初のキーを見つけるには、キーのリストSortedList<T>.Keysを使用し、キー上でBinary SearchまたはInterpolation Searchを実行します。これにより、O(log(n))が得られます(MSDNは、キールックアップがO(1)であると述べています)。

+0

はい!検索キーより大きい第1キー、または検索キーよりも小さい第1キー。ありがとうございます。 – Newbie

2

バイナリでO(n log n)ルックアップを検索します。

+0

http://en.wikipedia.org/wiki/Binary_searchを参照してください。私はあなたがそれを必要としているとは想像できません。 – Brian

+0

項目アクセスがO(1)の場合、バイナリ検索はO(log(n))です。 –

0

ものはオーデルのOにある検索(ログn)バイナリサーチものは順序O(n)は線形ではない場合のために

検索。物事が整っていないとうまくできない。

これを何度も何度もやってキャッシュしてしまうのでなければ、順序で値を並べるという考え方はO(n * log(n))です。線形検索を使用してください。

(キーではなく値を検索することに興味があったと思います)

関連する問題