今日のアルゴリズムに関する古いノートをレビューしていましたが、これが私の考えです。この関数の時間複雑度はO(1)ですか?
複雑度
O(1)
は、関数の実行時間がデータとは独立していることを意味します。
配列のすべての要素を追加する関数があるとしましょう。
int add(int[] array){
int sum =0;
for (int i=0;i<ARRAY_MAX_SIZE;i++){
sum= sum + (i<array.length?array[i]:0);
}
return sum;
}
ここで、ARRAY_MAX_SIZE
は可能な最大サイズの配列です。私はこのコードが効率的ではないことを知っています。私はこれについて議論したくありません。しかし、演算子+
は毎回同じ量の時間と呼ばれ、データのサイズの影響を受けません。
これは、この関数の複雑さがO(1)であることを意味しますか?
複雑さは 'O(ARRAY_MAX_SIZE)'です。 'ARRAY_MAX_SIZE'が定数の場合、' O(ARRAY_MAX_SIZE)== O(1) ' – Eric
@Ericは私が思ったものですが、私の一部はこれを受け入れることができませんでした。 – user902383
実際、それは必ずしも真実ではありません。私の答えを参照してください – Eric