各セクションのエンドポイントのリストがある場合、現在どのセクションを参照するためにどのようなデータ構造/アルゴリズムを使用すべきですか?例えばデータ構造/セクションルックアップのアルゴリズム
、Iは、セクションヘッダとコンテンツを含むウェブページを持っている場合、
- 入門(100ピクセルで終わる)
- セクション1(350pxで終了)
- セクション2(700pxで終了)
- 結論(1200pxで終了)
- コメント
と私は現在130pxで、それは私が現在「セクション1」にいると返すべきです。
エンドポイント
from bisect import bisect_left
arr = [100, 350, 700, 1200]
pos = bisect_left(arr, 130, 0, arr[-1])
の配列をオプション1件の
バイナリ検索をしかし、これはまだ位置の変更ごとに(n個のログ)Oを取ることができます。現在の場所の
オプション2
ハッシュテーブルルックアップは、
lookup = {0: "Introduction"
1: "Introduction"
...
10: "Section 1"
11: "Section 1"
...
}
section = lookup[130/10]
これは高速ですが、それは一般的なデータ構造/アルゴリズムがありますスペース
の多くを無駄にこのタイプの問題を扱うのは?
セクション番号はそれほど大きくすることはできません。単純な配列はOKだと思います。 – throwit
いくつのセクションがありますか?実行時にセクションが作成/更新/削除される可能性はありますか? –
私は、例としてWebページ上のセクションを使用しましたが、実際はより大きな配列に使用されているので、一般的なアルゴリズムはいいと思います。 @Толя私はリアルタイムでそれを変更することを考えていないが、それもあまりにも複雑なことは素晴らしいだろう。 –