1つのアルゴリズムは、問題解決のアイデアや方法が独立して存在しています
2アルゴリズム5つのプロパティ
2.1入力(ゼロ個以上を有します)
2.2出力(1つ以上の出力を有します)
有限の2.3(限定ステップを処理することができ、各ステップは、限られた時間内に処理することができます)
2.4正確な性質は、(アルゴリズムの各ステップの正確な意味を持っている、あいまいありません)
2.5実行可能性(アルゴリズムの各ステップで実行可能である、我々は完了の限られた数の工程を実行することができます)
大きなO 3メートル方法
一定の係数の算術スケール計量機能の基本的な操作の数はごくわずかである一方で、時間空間自然とアルゴリズムの性質のために、最も重要なのは、その大きさやトレンド、アルゴリズムの効率の主要部分のこれらの事の分析です。
処理アルゴリズムAのサイズN T(N)= O O(G(N))複雑(G(N))は、Aと呼ばれる時間との典型的な問題は、プログレッシブ時間アルゴリズムであるように、それは、関数gが存在すると仮定する。
いくつかの概念4時間計算
複雑最適な時間:どのくらいの基本的な算術演算作業を完了するためには、最低が必要です
最悪時間計算量:基本的な算術演算は、仕事を取るどのくらい
平均時間計算量:基本的な算術演算は、平均的に作業を完了するためにどのくらい
5時間計算いくつかの基本的な計算規則
その時間複雑度はO(1)であること①基本的な動作、すなわち、唯一の定数項、
②シーケンシャル構造が、時間複雑さを追加することによって計算されます
③環状構造、時間複雑さを乗じて算出されます
④分岐構造は、最大時間の複雑さを取ります
⑤判定アルゴリズムの効率は、倍の数が最も多い期間、他の小項目と定数項を運転に集中する傾向がある場合は無視することができます
⑥特別な注意がない場合には、我々は最悪時間計算量を参照し、アルゴリズムの複雑さの時間を分析しました
ソート時間の6共通の時間複雑
O(1)<O(LOGN)<O(N)<O(nlogn)<O(N 2)<O(N 3)<O(2 N)<O(N!)<O(N N)
7コード時間算出モジュールはtimeit
timeit測定コードの実行時間手段と、基本的な形式は次のとおりです。
timeit.Timer( 'ブロック'、 'パス')
例:
インポートモジュール
輸入はtimeit
コードブロックの計算は、と定義されます
DEF ()を追加します: W = 0 のための T における範囲(100 ): W + = Tの リターン wは
計算コードブロックの実行時間が必要
T = timeit.Timer( '追加()'、 ' から __main__ インポート追加') T1 = t.timeit(数= 1000)
タイプ8のpythonの内蔵パフォーマンス分析
8.1リスト
タイプ |
時間複雑 |
タイプ |
時間複雑 |
タイプ |
時間複雑 |
インデックス[] |
O(1) |
デル・オペレーター |
O(n) |
逆 |
O(n) |
indexassignment |
O(1) |
反復 |
O(n) |
連結 |
O(K) |
アペンド |
O(1) |
含まれている(中) |
O(n) |
ソート |
O(nlogn) |
ポップ() |
O(1) |
スライスを取得[X:Y] |
O(K) |
かける |
O(NK) |
ポップ(I) |
O(n) |
デルスライス |
O(n) |
|
|
挿入(I、アイテム) |
O(n) |
設定されたスライス |
O(N + K) |
|
|
8.2ディクショナリ表
タイプ |
時間複雑 |
タイプ |
時間複雑 |
タイプ |
時間複雑 |
コピー |
O(n) |
アイテムを取得します |
O(1) |
セットアイテム |
O(1) |
項目を削除 |
O(1) |
含まれている(中) |
O(1) |
反復 |
O(n) |
データ構造9
9.1基本概念
データ構造:データが編成されています
内蔵のデータ構造:pythonの自己定義データ構造
拡張データ構造:当社独自の定義されたデータ構造を使用するプロセス
アルゴリズム+データ構造=プログラム
抽象データ型:基本データとその動作、即ち、データ・タイプおよびカプセル化のデータ・タイプの操作を束ねるために、一緒に一体的に形成された上でサポート。