2016-04-22 8 views
1

Arrays.fill(char[] a,char val)の実装方法javaJavaの配列の複雑さの計算

とはどのような複雑さですか?

+2

[ソースコードを読む](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Arrays.java#2950)あなた自身。 –

答えて

3

fill(char[] a, char val)の定義を調べると、java.util.Arraysクラスが用意されています。

それがこの

public static void fill(Object[] a, Object val) { 
     for (int i = 0, len = a.length; i < len; i++) //this loop will continues to the length of a. 
      a[i] = val; 
    } 

ので、このメソッドの複雑さは次のようになりO(n)のようなものです。ここで、nは、パラメータに渡したオブジェクト配列Object[] aの長さです。

2

Javaの実装では、単純なforループを使用しています。しかし、JVMはしばしば内部機能を大幅に変更し、実行時にメソッドやクラス全体を低レベルの実装に置き換えることが多いことに注意してください。

多くの場合、ターゲット・システムに応じて、Arrays.fillは、より多くのC/C++のmemset機能のようなものに置き換えることができ、そのように、それは多くの場合、通常のforループよりもはるかに高速に実行されます。

すべての場合(Vikrantの答えで説明されているように)、複雑さはO(N)とみなす必要があります。Nは設定されている要素の総数です。

関連する問題