私はこれをしばらく理解しようとしており、私はそれを得ることができません。どんな助けも素晴らしいだろう。私はC++でプログラミングしています。2つのループで実行時間O(n^3 log n)で実行
2つのループ構造を使用して、O(n^3 log n)の実行時間を見つけます。
私はこれをしばらく理解しようとしており、私はそれを得ることができません。どんな助けも素晴らしいだろう。私はC++でプログラミングしています。2つのループで実行時間O(n^3 log n)で実行
2つのループ構造を使用して、O(n^3 log n)の実行時間を見つけます。
がヒントです:あなたがする必要がありますO(N*LogN)
操作を2つのネストされたループの中に入れて、操作にループが必要ないようにします。
たとえば、N
項目の配列で開始することができるi
とi
とj
間の配列要素を逆j
にネストされたループを実行し、次いで得られた配列をソート。反転はO(N)
、ソートはO(N*LogN)
なので、ソートが支配的です。 2つの外部ループは残りのO(N^2)
を提供します。ソートとリバースの両方を、追加のループなしで、標準ライブラリ関数を使用して行うことができます。
ありがとう!これは私がそれを把握するのを助けた。 – user1246294
私はおそらくこれを知っているが必要とされるものではなく、単にポイントを作るために - あなたはこれを行うことができます:ここで、これは宿題であると仮定すると
int x = 0;
for (int i=0; i<n; ++i) {
for (int j=0; j<n*n*log(n); ++j) {
x += j;
}
}
ほとんどすべての種類の複雑さは、本当にただ1つのループ構造で実現できるようです。あなたのケースでは、(擬似コード)のようなもの:
a := 0
b := 0
c := 0
d := 1
WHILE a < n OR b < n OR c < n OR d < n LOOP:
a := a + 1
IF a = n THEN:
a := 0
b := b + 1
IF b = n THEN:
b := 0
c := c + 1
IF c = n THEN:
c := 0
d := d * 2
'int型の停止は=(int型)(N * N * N *ログ(N));(int型、C = 0のための' '; C <停止; C++); ' ループは1つだけ必要です。 – Mysticial
'sleep((int)(n * n * n * log(n)));'ループは必要ありません。 – Mysticial
C++はそれとは関係ありません。実際には – littleadv