を更新するために、O(1)の性能、のは、私は整数配列を持っているとしましょう。 私は配列の要素を変更したい場合は、私は、メモリ内の特定のアドレスのデータを変更することによって、そうすることができます:a[2] = 9;
=>{1, 2, 9, 4, 5}
。Clojureの可変性:<code>int[] a = {1, 2, 3, 4, 5};</code>:Javaでは、ベクター
はClojureので、私はベクトルを持つことができます(def a [1 2 3 4 5])
。 O(1)の最悪ケースの時間複雑度が保証されたベクトルの特定の位置の要素を変更するにはどうすればよいですか?私はassoc
キーワードがO(1)平均時間の複雑さを持っていることを読んだが、これは私が探しているものではない。また、一時的なベクトルを調べましたが、O(1)のベクトルを更新するための良い例と簡単な例はまだありません。
あなたは既に配列にO(1)更新があり、ベクトルに平均O(1)更新があることを知っています - 両方のデータ型をClojureから使うことができます。 – noisesmith
@noisesmithはい、質問があります。上記のようなパフォーマンスを持つプリミティブなClojureデータ構造はありますか?また、上述したように、平均時間複雑度が有用であるので、この場合はそうではない。 http://stackoverflow.com/questions/17048076/big-o-of-clojure-library-functionsこれはassocが実際にO(logn)(基数32)であることを示すテーブルです。また、Clojureデータ構造には、O(1)最悪のアクセス時間または更新時間がないことも示されています。 – ljeabmreosn
プリミティブなし。 ClojureはJavaライブラリです。Javaデータ構造が必要な場合は、Clojureコードで使用できます。 – noisesmith