タグ

algorithmに関するqpSHiNqpのブックマーク (5)

  • Fisher-Yates shufflアルゴリズムを用いて自作で配列をシャッフルさせる - Qiita

    RubyPython、Underscore.jsなどにはshuffle関数があり、簡単に配列の順番をランダムに入れ替えることはできますが、自作で配列やリストをランダムに入れ替える場合に、Fisher-Yates shuffleというアルゴリズムがあるので共有したいと思います Fisher-Yates shuffle Fisher-Yates shuffleは配列からランダムに要素を抽出し、入れ替えるアルゴリズムです。 var length = array.length; for(var i = length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var tmp = array[i]; array[i] = array[j]; array[j] = tmp; } (Fisher-Yates shuff

    Fisher-Yates shufflアルゴリズムを用いて自作で配列をシャッフルさせる - Qiita
    qpSHiNqp
    qpSHiNqp 2017/08/23
    Fisher-Yates shuffle
  • Cloudera Blog

    Enterprises see embracing AI as a strategic imperative that will enable them to stay relevant in increasingly competitive markets. However, it remains difficult to quickly build these capabilities given the challenges with finding readily available talent and resources to get started rapidly on the AI journey. Cloudera recently signed a strategic collaboration agreement with Amazon […] Read blog p

    Cloudera Blog
    qpSHiNqp
    qpSHiNqp 2017/08/23
    Reservoir Sampling
  • 非復元抽出の高速かつ実装が簡単な方法を考える - シリコンの谷のゾンビ


     @tomerun (2013-07-21 2:00)  (random sampling without replacement) Nk  @unnonouno  unnonouno:   std::vector
    非復元抽出の高速かつ実装が簡単な方法を考える - シリコンの谷のゾンビ
  • 拡張ユークリッド互除法

    ユークリッドの互除法は最大公約数を計算する効率的な方法として古くから知られている方法です。 これについては,ユークリッドの互除法の項で説明しました。ここでは,その発展系の一つで色々なところでよく使われている,拡張ユークリッド互除法について説明します。 ユークリッドの互除法は2つの自然数 x,y の最大公約数を効率的に計算する方法でした。 例えば,GCD(13,5) を計算するのに, 13=2*5+3   5=1*3+2    3=1*2+1 2=2*1      を求めて,GCD(13,5)=1 とするものでした。今の場合この計算は,全く自明で,互除法は不要な感じがします。しかし,少し視点を変えるとそうとも言えません。上の式のうち最後の項を除いて,それぞれ,移項すると, 13-2*5=3 5-1*3=2 3-1*2=1 が得られます。ここで,3行

  • ヒープソート - Wikipedia

    ヒープソート (heap sort) とはリストの並べ替えを二分ヒープ木を用いて行うソートのアルゴリズムである[2](ヒープ領域とは無関係であることに注意する)。 アルゴリズムは、以下のように2つの段階から構成される。 未整列のリストから要素を取り出し、順にヒープに追加する。すべての要素を追加するまで繰り返し。 ルート(最大値または最小値)を取り出し、整列済みリストに追加する。すべての要素を取り出すまで繰り返し。 計算量は O となる[2]。安定ソートではない[2]。 アルゴリズム[編集] ヒープ構造は、ポインタ等の制御用データが不要で、データ自体の並び順(配列)だけで表現できるという利点がある。ヒープソートを実装する際にはこの利点を生かし、元のデータ領域をそのままヒープ構造や整列済みリストに転用するインプレースなソートとして実装することが多い。 最初にN個のデータを含む配列が与えられるも

    ヒープソート - Wikipedia
  • 1