問題
アルゴリズムの複雑さを説明します
答え
- 正確さ、読みやすさ、堅牢性、良好な時間および空間効率、アルゴリズムの複雑さの尺度であり、時間と空間効率:アルゴリズムは、一般的に以下のメトリックを含みます。
- アルゴリズムの効率化、一般的に以下の要因によって決定されます。
戦略はより速く、バブルソートよりも速くソートにそれをソートアルゴリズムを採用した(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個の効果よりも明らかに大きいです。