アルゴリズムを理解するパート 2 - シーケンス テーブル

アルゴリズムを理解するパート 2 - シーケンス テーブル

[[407946]]

この記事はWeChatの公開アカウント「Front-end Gravitation」から転載したもので、著者はYichuanです。この記事を転載する場合は、Frontend Gravity の公開アカウントにご連絡ください。

序文

開発において、配列はよく扱うデータ型ですが、その内部の格納構造はどうなっているのでしょうか?詳しく紹介します。

リニアテーブル

線形リストは、最も基本的かつ最も単純で、最も一般的に使用されるデータ構造です。線形リストは、同じ特性を持つ n 個のデータ要素の順序付けられたシーケンスです。

先行要素: 要素 A が要素 B の前に来る場合、A は B の先行要素と呼ばれます。

後続要素: 要素 B が要素 A の後にある場合、B は A の後続要素と呼ばれます。

線形テーブルの分類: 線形テーブル内のデータ保存方法は、シーケンシャル保存とリンク保存に分けられます。

  • シーケンシャル ストレージは、連続したアドレスを持つ一連のストレージ ユニットを使用して、線形リストのデータ要素を順番に格納します。
  • チェーンストレージとは、不連続なアドレスを持つストレージユニットにデータを保存し、ノードを使用してアドレスを接続して照会することです。

ランダム アクセス: 線形リストは連続したメモリ位置に格納されるため、インデックスを通じてメモリ アドレスを計算し、データにランダムにアクセスできます。

シーケンステーブル

シーケンシャルリストの格納方法は、実際にはメモリ内の空き位置を見つけてそこを占有し、その空き位置にデータ要素を 1 つずつ格納するというものです。

配列の構造に少し似ているように聞こえますか? はい、データは線形テーブル構造です。したがって、配列を使用して連続リストを表すことができます。線形リスト内の論理的に隣接するデータ要素は、隣接する物理ストレージ ユニットに格納されます。つまり、データ要素間の論理的な隣接関係は、データ要素の物理ストレージの隣接関係によって反映されます。

配列の長さは線形リストのストレージ スペースの長さであり、この量は通常、ストレージの割り当て後も変更されません。線形リストの長さは、線形リスト内のデータ要素の数です。この量は、線形リスト内で挿入および削除操作が実行されるたびに変化します。覚えておいてください、線形リストの長さは常に配列の長さ以下である必要があります。

  1. クラスSequenceList{
  2.   
  3. コンストラクタ(){
  4. // 要素を格納する配列
  5. this.elemList = [];
  6. // 現在のシーケンスリスト内の要素数
  7. this.elemLength = 0;
  8. }
  9. // 線形テーブルを空のテーブルに設定する
  10. クリア(){
  11. this.elemLength = 0;
  12. }
  13. // 現在の線形テーブルが空のテーブルかどうかを判定します
  14. 空です(){
  15. this.elemLength === 0を返します
  16. }
  17. // 現在の線形テーブルの長さを取得します
  18. 長さ(){
  19. this.elemLengthを返します
  20. }
  21. // 線形リストに要素を追加する
  22. 挿入(要素){
  23. this.elemList[this.elemLength++] = elem;
  24. }
  25.  
  26. // i番目の要素に要素 elem を挿入する
  27. 挿入インデックス(i,要素){
  28. // まず、インデックス位置 i の要素とそれ以降の要素を 1 つずつ後方に移動します
  29. for (let index = this.elemLength - 1; index > i; index --) {  
  30. this.elemList[インデックス] = this.elemList[インデックス-1];
  31. }
  32. // インデックス位置 i の elem 要素を格納します
  33. this.elemList[i] = elem;
  34. }
  35.  
  36. // 指定された位置iの要素を削除した後、要素を返す
  37. 削除(i){
  38. //インデックス i の値を記録する
  39. 現在のものを this.elemList[i] とします。
  40. // インデックス i の後の要素を 1 つずつ前方に移動します
  41. for (let index = i; index < this.elemList - 1; index ++) {
  42. this.elemList[インデックス] = this.elemList[インデックス+1];
  43. }
  44. // 要素数 - 1
  45. this.elemLength --;  
  46. 戻る 現在;
  47. }
  48.  
  49. // シーケンスリスト内の elem 要素の最初の位置を検索します
  50. インデックスOf(要素){
  51. ( i = 0 とします; i< this.elemLength; i++){
  52. if (this.elemList[i] === elem) {
  53. iを返します
  54. }
  55. -1 を返します
  56. }
  57. }
  58. }

配列の利点と欠点

アドバンテージ:

  • メモリスペースの高利用率
  • 要素のインデックスによるアクセス、要素のクエリの効率が高い

欠点:

  • 要素の挿入と削除は非効率的です。 (配列の途中で要素を挿入または削除する場合は、要素を操作して順序を変更する前に、テーブル全体を移動する必要があります)
  • スペースの長さには制限があり、線形テーブルの長さを拡張することはできません。 (アクセス要素の長さがシーケンス リスト内の要素数より大きい場合、「オーバーフロー」が発生します。要素の長さが事前に割り当てられたスペースより小さい場合、スペースが大幅に無駄になります)

まとめ

この記事は、「アルゴリズムを理解する」シリーズの第 2 回目です。主に線形リストの 1 つ目のタイプのシーケンシャル ストレージについて説明し、シーケンシャル ストレージの実装方法を紹介します。

<<:  AI はどのようにしてソフトウェアおよびハードウェア製品のイノベーションを実現するのでしょうか? Baidu Brain オープンデー 西安駅の暗号解読

>>:  2021年なのに、出会い系アプリのアルゴリズムはなぜこんなにも悪いのでしょうか?

ブログ    
ブログ    

推薦する

...

LLM ウィザード、コードの事前トレーニングは魔法の杖です! UIUC中国チームがコードデータの3つの利点を明らかに

大規模モデルの時代における言語モデル (LLM) は、サイズが大きくなるだけでなく、トレーニング デ...

...

Googleはロボットを大規模な言語モデルの手と目として機能させ、タスクを16のアクションに分解して一度に完了させます。

大型モデルはロボット工学の分野でその地位を確立しました。 「飲み物をこぼしてしまいました。助けてくれ...

IEEE: 新興人工知能サイバーセキュリティの課題と解決策

合成現実(1)課題人工知能は、人々がこれまでしたことのない、または言ったことのないことをしたり、した...

自動化された機械学習は AI 研究の次の主流となるでしょうか?データサイエンティストの意見

自動化された機械学習は、過去 1 年間で大きな関心を集めるトピックになりました。 KDnuggets...

ドローンが田舎に飛来、その価値は想像もできない

現在、技術の継続的な進歩と産業発展の継続的な加速により、エンターテインメント、輸送、救助などの分野で...

Python ベースのパーセプトロン分類アルゴリズムの実践

パーセプトロンは、バイナリ分類タスク用の線形機械学習アルゴリズムです。これは、人工ニューラル ネット...

人工知能技術の発展に関する合理的な見方

[[421597]]社会の生産性が急速に発展するにつれ、文学作品に描かれた未来の技術やより良い生活が...

Versius手術ロボットが英国泌尿器科手術に登場

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

DingTalk Flutter クロス 4 端末ソリューションの設計と技術実践

この記事では、主にDingTalkがFlutterをベースに構築したクロスクアッドターミナルアプリケ...

スペイン・ラ・リーガ:AIと機械学習でファン体験の変革に取り組む

IT は、世界で最も人気のあるスポーツであるサッカーをスペインで発展させ、体験する上で重要な役割を果...

2021年の中国AI業界の10大トレンド、1分でわかる | WAIC2021

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

メタバース: 新たな人間コミュニティか、それとも徹底的な監視による「金儲けの道具」か?

バーチャルリアリティヘッドセットは何年も前から市場に出回っており、多くのティーンエイジャーもこれらの...

マインドコントロールが現実に:話したり手を動かさずに、ただ横たわっているだけでゲームをプレイできる

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...