- 締切済み
100枚のカードの整列にクイックソート法でおよそ5分かかるとき200枚
100枚のカードの整列にクイックソート法でおよそ5分かかるとき200枚のカードを同じ方法で整列すると およそ どれくらいの時間がかかるか 100枚のカードの整列の単純ソート法でおよそ5分かかるとき、200枚のカードを同じ方法で整列するとおよそ どれくらいの時間がかかるか 以上2点について教えてほしいです。また、答えの導き方も教えていただければ幸いです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jjon-com
- ベストアンサー率61% (1599/2592)
整列対象となるデータ数をNとするとき, 単純ソートの計算量は,Nの2乗のオーダ。言い換えれば,整列時間はNの2乗に比例して増加する。 データ量が100枚→200枚,すなわち,2Nになったので,整列時間は(2N)の2乗 = 4×(Nの2乗),すなわち,4×5分=20分となる。 データが特別な条件下にないクイックソートの計算量は,N×log2Nのオーダ。 データ量が2Nになったので,整列時間は(2N)×log2(2N) ≒ 2×(N×log2N)【注】,すなわち,2×5分=10分となる。 【注】log2(2N) = (log2N)+1 なので,両辺はほとんど変わらないと見なせるため。 log2Nという対数表記自体が分からなければ,次のQ&Aを参照。 http://okwave.jp/qa/q5985172.html の私の過去の回答ANo.2
- kmee
- ベストアンサー率55% (1857/3366)
「オーダー」とか「O(n)」って式とかって、習ったり聞いたりしたことはないですか? あと、「計算量」というのも。 細かい定義は、数学書なり、技術書なり、ネットなりで調べてください。 ソートのアルゴリズムは、それぞれに特色がありますが、大抵は、並び換えるものの数で計算速度が変化します。 n個のデータをソートするときの、nにたいしてどれくらいの計算量かを表わす目安として、O(f(n)) (f(n) はnの関数)が使用されます。 m*n個のデータの計算量はO(f(m*n))ですから、数はm倍になると、計算量はほぼf(m*n)/f(n)倍になります。 クイックソートの計算量は、アルゴリズムの実装方法や初期のデータの並び方で大きく変化します。 最悪の場合だと、 O(n^2)(nの二乗)です。 nが2倍になると、(2*n)^2/n^2 = 2^2=4倍の計算量になります。 100枚で5分なら、200枚では最悪5分*4倍=20分ということになります。 ただ、通常はデータの並びが最悪のケースにはならないし、最悪のケースを回避するようなプログラムにするので、最悪の計算量ではなく、平均の計算量で考えます。
- Tacosan
- ベストアンサー率23% (3656/15482)
それぞれの計算量を考えてください.