17アルゴリズムの複雑さ

問題

アルゴリズムの複雑さを説明します

答え

  • 正確さ、読みやすさ、堅牢性、良好な時間および空間効率、アルゴリズムの複雑さの尺度であり、時間と空間効率:アルゴリズムは、一般的に以下のメトリックを含みます。
  • アルゴリズムの効率化、一般的に以下の要因によって決定されます。
    戦略はより速く、バブルソートよりも速くソートにそれをソートアルゴリズムを採用した(1)アルゴリズム
    のスケール(2)問題、素数のための外観は、10未満明らかに速く検索素数より1000未満です
    ( 3)アセンブリ言語は明らかに高い効率のJavaよりも、プログラム言語で書かれ
    、より高速なマシンコード実行高い質量コンパイラによって生成された高品質のマシンコード(4)
    速度は、(5)機械実行命令は、実行は明らかに速いI7でありますI5に。
    考える上で、他の要因の定数、外出先の場合には、当然のことながら、上記の要因を考慮してください。
  • アルゴリズムの時間計算量と空間計算の複雑さを含みます。Javaのガベージコレクションのメカニズムので、ループで繰り返し述べた変数を解放することができないではない場合、メモリは必ずしも安定しています。そこで、我々はより多くの時間の複雑さ、すなわちCPU時間、CPU時間を懸念していると、文が実行される回数に変換することができます。したがって、我々は唯一の重要な問題のサイズn個の実行コードの数との関係を調べるために、時間の複雑さを分析します。次のコードを考えてみます。
private static void bubble(int[] n)
	{
		for (int i = 0; i < n.length - 1; i++)
		{
			for (int j = 0; j < n.length - i - 1; j++)
			{
				if(n[j] > n[j + 1])
				{
					int temp = n[j];
					n[j] = n[j + 1];
					n[j + 1] = temp;
				}
			}
		}
	}

このコードは、コード鍵交換ロジックです。最良の場合は、n = {1,2,3,4,5,6,7,8,9,10}であり、最悪の場合は、nは= {10,9,8,7,6,5,4 、3,2,1}。前者の場合は、キーコードの実行回数が0であり、後者の場合、キーコードは、さらにに変換N *(N-1)、およびその後に変換し、時間90、即ち、10 *(10-1)の数を実行しますN乗-nは、正方形はとても大きく、小さな家、ソートのn乗されたバブルの今回の複雑さを取る、n個の効果よりも明らかに大きいです。

公開された358元の記事 ウォンの賞賛0 ビュー2748

おすすめ

転載: blog.csdn.net/langli204910/article/details/105228250