のリストがありText
、それらはソートされています。elem
線形検索ではなく二分検索として実装することで、はるかに高速なバージョンの を作成できるように思えます。そのようなバージョンはすでに存在しますか?
質問する
2064 次
3 に答える
6
二分探索にはランダム アクセスが必要です。Haskell リストはランダム アクセスを提供しないため (途中の要素へのアクセスには直線的な時間がかかります)、二分探索は役に立ちません。
データがArray
ランダム アクセスを提供する にある場合、二分探索が実行可能です。
于 2012-04-17T09:12:00.673 に答える
1
テキストのリストがあり、それらはソートされています。
データ構造を変更すると、アルゴリズムが明確になります (ブルックスの言葉を言い換えると)。
これは特に Haskell に当てはまります。Haskell では、通常、データ構造が可変配列の観点からではありません (つまり、ポインターのハッキングに頼ることはありません)。
たとえばヒープやツリーを使用してテキストを保存する場合、 O(log(n)) elemを簡単に実装できます。それらがソートされているという事実を利用して、より高速な挿入を提供できます。
于 2012-04-17T11:48:19.243 に答える