データ構造とアルゴリズム入門
6848 ワード
この記事ではPythonとプログラミングの最も基本的な概念を探求します.
データ構造とアルゴリズムの良い把握とそれらを実装する方法は、コードを使用して課題を解決し、実世界の問題にロバストなソリューションを作成するのを支援します.
データ構造とアルゴリズムは少しの頭痛でありえます、しかし、この記事の終わりに、あなたはその頭痛のために痛み安心を持ちます.
データ構造
データ構造は、データを整理、処理、取得、格納することができる特別な形式です.
特定用途には様々なタイプがある.
データ構造は、ユーザーが簡単に使用するためのデータを整理支援することが重要です.
組み込み
私は前の記事で詳細にこのタイプをカバーしましたリスト
リストはデータのコレクションです.これは、重複した値を持つことができます. タプル
タプルは順序のないデータのコレクションです.これは、重複した値を持つことができます. セット
セットは、順序なしで、変更不可能で、インデックスなしであるデータのコレクションです.値を複製することはできません. 辞書
辞書は、データのコレクションは、修飾され、変更可能なインデックスです.値を複製することはできません. ユーザ定義
ユーザー定義のデータ構造は、ユーザーがデータ構造の機能を制御し、それらを作成することができます.スタック
スタックは、FILO(最後の最初の)形式でデータを格納する線形データ構造です.新しい要素は、一端で追加され、その端だけで削除されます.
アイテムの削除はPOPと呼ばれ、項目を追加するとpushと呼ばれます.
イラスト
リストを使用した実装
キュー
キューは、FIFO(first in first out)形式で項目を格納する線形データ構造です.追加される最後の項目は削除される最初です. イラスト
リスト
リンクリストは、要素が隣接した記憶場所に格納されない線形データ構造である.要素はポインタを使ってリンクされます.
イラスト
の木
木は、この のように見える階層的なデータ構造です
イラスト
上部をルートと呼び、その下の連続する部分をノードと呼ぶ.後継者や子のない名詞を葉節と呼ぶグラフ
グラフはエッジとノード(頂点)を持つ非線形データ構造である.エッジは2つのノードを接続します. イラスト
ハッシュマップ
ハッシュマップはインデックス付きデータ構造です.これは、ハッシュ関数()を使用して、対応するキーを持つ配列をスロットの配列に取得します.キーは一意で変更できません.イラスト
ヒープ
ヒープは、優先順位キューを表示するために使用されるデータ構造体です.このデータ構造体は、要素がランダムにポップされたときに最小の要素を与えます.アイテムがポップされるか、ヒープの構造が押されるとき、維持されます. イラスト
アルゴリズム
アルゴリズムは、問題を解決するために続く規則のセットです.入力が与えられた場合、アルゴリズムが実行され、出力からの結果が出力されます.
ソートアルゴリズム
ソートアルゴリズムは、リストまたは配列を入力として受け取り、項目を特定の順序で並べる一連の命令です.
ソートアルゴリズムは、特定の順序でデータを整理するのに便利です.彼らは組織化されたデータをより整理しやすく使いやすくする.
ソートアルゴリズムの例としては:バブルソート 挿入ソート マージソート シェルソート 選択ソート 探索アルゴリズム
探索アルゴリズムはデータ構造の項目を検索するための命令セットである.それらに分類されます.シーケンシャルサーチ
この種の探索アルゴリズムはリストまたは配列で使用され、各要素が順番に通過し、各要素が解決されるまでチェックされます.
一例は線形探索 である
Geeks for Geeksからのイラスト
インターバル検索
この種の検索アルゴリズムは、ソートされたデータ構造(例えばソートされたアレー)に使用される.探索空間を2つに分割し、解決が見つかるまでプロセスを停止し続ける.
例はバイナリ検索です. Geeks for Geeksからのイラスト
グラフアルゴリズム
グラフアルゴリズムは、グラフのノードを通過する(縦断)命令の集合である.これは、ノードまたは特定のノード間の特定のパスを見つけるために使用されます.
グラフアルゴリズムは、多くの使用を1つの現実世界の使用タクシータクシーアプリケーションです.アルゴリズムは、マップの機能には、指定されたルートを使用して車両の最短のパスまたは最短経路を見つけるために実装されます.深さの最初の横断
深さ優先探索は、現在のノードをチェックして、それからその後継者のうちの1つに続いて、同じプロセスを繰り返すことによって、グラフを横断する.
電流が後継者を持たない場合、アルゴリズムはその前任者に戻り、それから後継者をチェックします、そして、解決が見つけられるならば、検索は止まります. Freecodecampからのイラスト
幅の最初の横断
幅の最初の探索は、現在のノードを最初にチェックして、その後、連続したレベルにその後継者を含むことによって、それを拡大することによって、グラフを横断します.
これは、すべてのノードは、現在のレベルでは、解決策は、検索が終了するまでは、次のレベルに続けて行く.
Simplilearnからのイラスト
アルゴリズムの性質
有限要素
アルゴリズムは、入力された任意の入力の定義された数の後に終了する必要があります.出力指定
アルゴリズムはユーザによって与えられた入力の結果として出力を与えなければなりません.出力はプロセスの解決です. 効果的な
アルゴリズムのステップは、正確に、そして、有限の時間の範囲内で実行されなければならない. 入力される入力
アルゴリズムは、問題への解決を生成するのに必要なプロセスを実行するために入力値を与えなければなりません. 明確な
アルゴリズムは、指定された問題に対する解決を生成する際にそれに続く指定されたステップを持たなければなりません. 次回までは、コードを使用することがあります!
データ構造とアルゴリズムの良い把握とそれらを実装する方法は、コードを使用して課題を解決し、実世界の問題にロバストなソリューションを作成するのを支援します.
データ構造とアルゴリズムは少しの頭痛でありえます、しかし、この記事の終わりに、あなたはその頭痛のために痛み安心を持ちます.
データ構造
データ構造は、データを整理、処理、取得、格納することができる特別な形式です.
特定用途には様々なタイプがある.
データ構造は、ユーザーが簡単に使用するためのデータを整理支援することが重要です.
組み込み
私は前の記事で詳細にこのタイプをカバーしました
リストはデータのコレクションです.これは、重複した値を持つことができます.
タプルは順序のないデータのコレクションです.これは、重複した値を持つことができます.
セットは、順序なしで、変更不可能で、インデックスなしであるデータのコレクションです.値を複製することはできません.
辞書は、データのコレクションは、修飾され、変更可能なインデックスです.値を複製することはできません.
ユーザー定義のデータ構造は、ユーザーがデータ構造の機能を制御し、それらを作成することができます.
スタックは、FILO(最後の最初の)形式でデータを格納する線形データ構造です.新しい要素は、一端で追加され、その端だけで削除されます.
アイテムの削除はPOPと呼ばれ、項目を追加するとpushと呼ばれます.
イラスト
stack = []
stack.append("Andisi")
stack.append("Ambuku")
stack.append(2022)
print(f"Initial stack : {stack}")
Initial stack : ['Andisi', 'Ambuku', 2022]
stack.pop()
2022
stack.pop()
'Ambuku'
stack.pop()
'Andisi'
print(f"Stack after elements are removed : {stack}")
Stack after elements are removed : []
キューは、FIFO(first in first out)形式で項目を格納する線形データ構造です.追加される最後の項目は削除される最初です.
queue = []
queue.append("Andisi")
queue.append("Ambuku")
queue.append(2022)
print(f"Initial Queue is {queue}")
Initial Queue is ['Andisi', 'Ambuku', 2022]
queue.pop(0)
'Andisi'
queue.pop(0)
'Ambuku'
queue.pop(0)
2022
print(f"Queue after removing element: {queue}")
Queue after removing element: []
リンクリストは、要素が隣接した記憶場所に格納されない線形データ構造である.要素はポインタを使ってリンクされます.
イラスト
木は、この
イラスト
上部をルートと呼び、その下の連続する部分をノードと呼ぶ.後継者や子のない名詞を葉節と呼ぶ
グラフはエッジとノード(頂点)を持つ非線形データ構造である.エッジは2つのノードを接続します.
ハッシュマップ
ハッシュマップはインデックス付きデータ構造です.これは、ハッシュ関数()を使用して、対応するキーを持つ配列をスロットの配列に取得します.キーは一意で変更できません.イラスト
ヒープは、優先順位キューを表示するために使用されるデータ構造体です.このデータ構造体は、要素がランダムにポップされたときに最小の要素を与えます.アイテムがポップされるか、ヒープの構造が押されるとき、維持されます.
アルゴリズム
アルゴリズムは、問題を解決するために続く規則のセットです.入力が与えられた場合、アルゴリズムが実行され、出力からの結果が出力されます.
ソートアルゴリズム
ソートアルゴリズムは、リストまたは配列を入力として受け取り、項目を特定の順序で並べる一連の命令です.
ソートアルゴリズムは、特定の順序でデータを整理するのに便利です.彼らは組織化されたデータをより整理しやすく使いやすくする.
ソートアルゴリズムの例としては:
探索アルゴリズムはデータ構造の項目を検索するための命令セットである.それらに分類されます.
この種の探索アルゴリズムはリストまたは配列で使用され、各要素が順番に通過し、各要素が解決されるまでチェックされます.
一例は線形探索
Geeks for Geeksからのイラスト
この種の検索アルゴリズムは、ソートされたデータ構造(例えばソートされたアレー)に使用される.探索空間を2つに分割し、解決が見つかるまでプロセスを停止し続ける.
例はバイナリ検索です.
グラフアルゴリズム
グラフアルゴリズムは、グラフのノードを通過する(縦断)命令の集合である.これは、ノードまたは特定のノード間の特定のパスを見つけるために使用されます.
グラフアルゴリズムは、多くの使用を1つの現実世界の使用タクシータクシーアプリケーションです.アルゴリズムは、マップの機能には、指定されたルートを使用して車両の最短のパスまたは最短経路を見つけるために実装されます.
深さ優先探索は、現在のノードをチェックして、それからその後継者のうちの1つに続いて、同じプロセスを繰り返すことによって、グラフを横断する.
電流が後継者を持たない場合、アルゴリズムはその前任者に戻り、それから後継者をチェックします、そして、解決が見つけられるならば、検索は止まります.
幅の最初の探索は、現在のノードを最初にチェックして、その後、連続したレベルにその後継者を含むことによって、それを拡大することによって、グラフを横断します.
これは、すべてのノードは、現在のレベルでは、解決策は、検索が終了するまでは、次のレベルに続けて行く.
Simplilearnからのイラスト
アルゴリズムの性質
有限要素
アルゴリズムは、入力された任意の入力の定義された数の後に終了する必要があります.
アルゴリズムはユーザによって与えられた入力の結果として出力を与えなければなりません.出力はプロセスの解決です.
アルゴリズムのステップは、正確に、そして、有限の時間の範囲内で実行されなければならない.
アルゴリズムは、問題への解決を生成するのに必要なプロセスを実行するために入力値を与えなければなりません.
アルゴリズムは、指定された問題に対する解決を生成する際にそれに続く指定されたステップを持たなければなりません.
Reference
この問題について(データ構造とアルゴリズム入門), 我々は、より多くの情報をここで見つけました https://dev.to/andisiambuku/introduction-to-data-structures-and-algorithms-in-python-2c06テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol