コードの時間の複雑さは、ループまたは操作の数に依存していますか?

user10516751:

私は私が別の配列と私の配列の要素を比較するために必要なするコードを作っていました。

しかし、私はそれが内部既にループの一つであったとして、これは最初の配列のために、O(N ^ 2)にO(n)のからの私の時間の複雑さを増すだろうと考えていました。

だから私は(変数iと)ループの親の内側に、このようなコードを思い付きました:

int m = 0;
int ele = array2[m];
if(array1[i] == ele)
    count++;
m++;

行われているものが同じであるため、唯一の私は、forループ放射されている。しかし、私は時間の複雑さは、実際にはO(n)であったか、Oとなった(N ^ 2)ことを思っていました。

また、私はこれが唯一の同じインデックス付きの要素ではなく、すべてを比較することを理解しています。誰かがこれについての詳細な情報を手放すことができれば私は幸いです。

スイーパー:

アルゴリズムの時間計算量は、あなたのループを書いても、あなたがアルゴリズムで行う操作の時間計算方法によって異なります。

あなたのアルゴリズムはO(1)操作の任意の数で構成されている場合、あなたのアルゴリズムはO(1)です。

あなたのアルゴリズムは、n個の定数から1つの以上のループ(ネストされていない)で構成されている場合は、時間の複雑さは、O(N * the_time_complexity_of_the_operation_in_the_loop)であります

すべてのステートメントは、以下のO(1)時間がかかります。

int m = 0;
int ele = array2[m];
if(array1[i] == ele)
    count++;
m++;

その全部がO(1)です。このブロックは、時間複雑度はO(N * 1)= O(N)、ここで、nとなるように、あなたの配列をループは、配列の長さであることをforループの内側にあります。

ここでは、同じインデックスにある要素だけを比較すると、時間の複雑さがそれほど複雑になった理由を考えるための直感的な方法です。

あなたは2つの配列のすべての可能なペアを比較したい場合は、どのように多くのペアがありますか?最初の配列の最初の要素が第二の配列から他の要素nの対を形成することができ、第一の配列の第2の要素は、N個の第二の配列の要素などと対を形成することができます。一般に、第一の配列の各要素のために、N個の対を形成することができます。二つの配列は同じ長さであると仮定すると、ペアの総数はN ^ 2です。したがって、多くの比較が、時間複雑性はO(N ^ 2)であることを意味する、行われる必要があること。

あなたは同じインデックスでペアの要素を比較したい場合は、どのように多くのペアを持つことができますか?N対、正確に1対の各インデックス対応するので。したがって、あなたは、時間の複雑さはO(n)があることを意味する、n個の比較をする必要があります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=219975&siteId=1