アルゴリズムの複雑さが分割され、時間の複雑さとスペースの複雑さ、良い面と悪いコードの両方も測定二つの重要な指標です。
- 時間の複雑さ:手段が実行する計算作業に必要なアルゴリズム。
- 複雑さの間:必要に応じてこのアルゴリズムのメモリ空間の実装を指します。
アルゴリズムの複雑さは、アルゴリズムを実行しているどのくらいのコンピュータリソースのを反映して必要に応じて、最も重要なコンピュータリソースは、時間と空間の複雑さに時間と空間(すなわち登録)リソース、複雑です。
1.概念の理解
1.1基本的な実行時間:T(N)
動作環境や入力サイズのため、絶対時間コードの実行は計り知れないですが、私たちは、基本的なコード実行の数を推定することができます。
一般的に、基本的なアルゴリズムの操作を繰り返し、問題の大きさの関数回数行われるN、この関数は相対的な時間を表すために使用され、T(n)と書くことができます。
1.2時間計算:O(N)
不確実性のルールの実装以来、T(n)が分析してタイムコードを実行する期間を比較するには不十分であるように、ある(記事は、4つの可能に下記参照)プログレッシブ時間の複雑な概念(漸近的時間計算量)を、公式これは次のように定義されます。
nが無限大に近づくと、T(N)/ F(N)は、F(N)と呼ばれるゼロリミット定数に等しくないような関数f(n)は、存在する場合にはT(n)は、同程度の関数であります。T(n)で表さ= O(F (N)) :O(F(N))のアルゴリズム、略称の進行時間複雑であることを特徴とする時間複雑。
首都「O」と漸近的時間計算量が表現され、それはまたランダウの記号を知られています。
そこ計算複雑性O(1)図のアルゴリズムの時間及び空間複雑であり、O(N)、O(LOGN)、O(nlogn)、O(N ^ 2)の概念、。
唯一のスペースも複雑に使用される時間の複雑さを示すために使用されていません。
アルゴリズムの時間がかかる/消費データ空間増分の関係を示す関数の背後Oブラケット。ここで、Nは、入力されたデータの量を表します。
1.3空間的複雑:S(N)
S(N)= O(F(N)):アルゴリズムは、コンピュータ内で実行されたときに同様の複雑さ、空間複雑さの測度がストレージ空間を意味時間を要する、と称します。
上述したように、O(n)の時間計算量を表すために使用される、それは、空間複雑さのためにも使用されるだけでなく。
2.シーン解析:
これは、シーン解析のための時間複雑であり、複雑さの時間順:O(1)<O( log2n)<O(N)<O(N ^ 2)
シーン1: T(N)= O(1)。
これは、アルゴリズムの実行中の時間は、時間のかかる/スペースの消費を行うことは何もありませんし、入力データのサイズに関係なく、入力されたデータは増加の何倍も、時間のかかる/スペースの消費量が同じで、時間と空間の複雑さの最小値である定数、である表します。
ハッシュアルゴリズムは、典型的なO(1)時間の複雑さ、あなたは(言葉の抵触に関係なく)計算後の目標を見つけることができますどのようなサイズのデータに関係なく、です。
シーン2: T(N)= O(log2n)
データはログベース2はここにある(増加ログをn回かかり、N倍に増加されたときにデータが増加した場合、例えば、256倍だけ増加消費8倍、線形よりも低いです時間複雑)。
バイナリサーチは、すべての半分はちょうどターゲットを見つけるために8を見つける必要がある256人のデータルックスの可能性を排除したら、O(ログn)のアルゴリズムは、見つけることです。
場面3: T(N)= O(N)
これは、増加を数回消費し、アルゴリズムは線形アルゴリズム、データ増加の数倍量であることを示しています。
そのようなアレイ内部の最大数を見つけるをループするための一般的なように、nを変数が再度スキャンされなければならない、操作の数は、アルゴリズムの複雑さはO(n)は、nです。
シーン4: T(N)= O(^ N-2)
これは、増加した時刻nの線形複雑度よりも高く、時間のかかる平方倍の増加n個のデータ代表の倍の量れます。
例えば、バブルソートのためには、スキャンN×N回の典型的なO(N ^ 2)アルゴリズム、数Nソート必要です。
4つのシナリオに加えて、プログラミングの世界では、様々なアルゴリズム、だけでなく、多くの異なる形態の時間の複雑さを持って、我々は、優先度の高い順にインクリメントされる大きさの順序に従って、時間複雑に従います。
オーダー(log2n)の一定の順序O(1)<<<正方形オーダーはO(n ^ 2)<立方オーダOの(N ^ 3)<k回の線形順序O(N)<線形順序O(nlog2n)パーティオーダーはO(n ^ K)<指数オーダーO(2 ^ N)......
アルゴリズムの3比較:
ソートアルゴリズム |
平均時間 |
最悪の場合 |
安定 |
追加のスペース |
リマーク |
---|---|---|---|---|---|
バブル |
O(N 2) |
O(N 2) |
安定しました |
O(1) |
nは時間よりよいです |
為替 |
O(N 2) |
O(N 2) |
不安定な |
O(1) |
nは時間よりよいです |
選択 |
O(N 2) |
O(N 2) |
不安定な |
O(1) |
nは時間よりよいです |
挿入 |
O(N 2) |
O(N 2) |
安定しました |
O(1) |
注文した最も良いです |
カーディナル数 |
O(R Bログ) |
O(R Bログ) |
安定しました |
O(N) |
Bは、真数(0-9)であります Rは基数である(千) |
シェル |
O(nlogn) |
O(N s)は1 <S <2 |
不安定な |
O(1) |
sがパケットを選択します |
速いです |
O(nlogn) |
O(N 2) |
不安定な |
O(nlogn) |
nは大きな、より良いです |
合併 |
O(nlogn) |
O(nlogn) |
安定しました |
O(1) |
nは大きな、より良いです |
ヒープ |
O(nlogn) |
O(nlogn) |
不安定な |
O(1) |
nは大きな、より良いです |
自分の理解と一緒に、いくつかの公式統計を描き、我々はアルゴリズムを総括し、原則を拡張する概念から覆い、時間の導入の複雑さに、より包括的なブログを一緒に入れて、我々はいくつかの助けを持っていると思ってい。
Shaoxia ...ヾ(◍°∇°◍)テクノ゙...滞在してください
より多くの人々が得ることを学ぶ見ることができるように、歓迎の親指アップ、コメント、利息を
私の「今日のヘッドラインをよりエキサイティングな、してください注意を払うをいいえ「:Javaのクラウドノート