データ構造の独習方法: まず、第 1 段階でデータ構造を理解し、基本的な構成とパフォーマンスを理解します。次に、第 2 段階でデータ構造を深く掘り下げ、データ構造をマスターします。関連する特性を理解してコードを作成できるようになり、最後に第 3 段階でデータ構造を取得し、学んだ知識を実際の問題に適用します。
#データ構造を独習する方法:
第一段階: データ構造を理解する
ステップ 1:これを学ぶには、配列、リンク リスト、スタック、キュー、ハッシュ テーブル、ジャンプ テーブル、グラフ、ツリー、ヒープの 10 個のデータ構造が何であるかを知る必要があります。その理由とその方法? Xiaolu 氏は、基本的なデータ構造の本を読むか、Baidu や Google を使用して、各データ構造が何に使用されるのか、その理由とその方法を簡単に理解することをお勧めします。ただメモを取ってブログを書くだけです。
第 2 ステップ: 各データ構造には長所、短所、パフォーマンスがあります。では、データ構造とアルゴリズムのパフォーマンスを測定するためにどのような基準を使用すればよいでしょうか? 2 番目のステップは、時間計算量と空間計算量に関する計算量解析の内容を学習することですが、この部分は、この後学習するデータ構造やアルゴリズムに性能基準が必要となるため、非常に重要です。差別化 問題解決では、最高のパフォーマンスを備えたデータ構造とアルゴリズムが選択されます。
第 2 段階: 詳細なデータ構造
第 1 段階: コードを作成します。以上、基本的なデータ構造に関する特徴や利用条件を10項目挙げましたが、次に各データ構造を一から詳しく検討していきます。 、チェックなどの操作が必要です。自分で実装してマシン上で実行してください。コードを書くときは、境界条件、ポインタ、コードの仕様に注意する必要があります。 これにより、コードに対する畏敬の念がさらに高まります。コードを書くときは、常に真剣に取り組む必要があります。マシン上でコードを書くことに問題がない場合は、コードを手書きして自分でコードを書くこともできます。ノートにペンを書くと、コードのロジックへの理解が深まります。第 2 ステップ: 第 1 段階では、パフォーマンス測定標準について学習しましたが、次のステップでは、関連する最も一般的に使用される 10 個のデータ構造に戻り、パフォーマンス分析を実行します。オペレーション。コードを作成しながらパフォーマンス分析を実行しないのはなぜでしょうか?と疑問に思われるかもしれません。ステージの利点は、問題解決に集中できることだと思います コードを書くことは、コードを書く思考力や論理力を鍛えることです パフォーマンス分析は、分析能力を高めることです パフォーマンス分析が完了したら、次のことを見てみましょう以前に書かれた最適化可能なコード。この時期にはさまざまな問題に遭遇することになるのですが、問題に遭遇したときは、たいていBaiduやGoogleにアクセスして、他の人が書いた記事を参考にノートにまとめて記録しています。
3 番目のステップ: 各データ構造のパフォーマンス分析が完了したら、各データの詳細な分析を進めます。最初の段階でおすすめするのは、深い知識を必要としない基礎的な本を何冊か読むことです。しかし、いくつかの概念を深く理解するには、信頼できる詳細な分析が記載されたデータ構造の本が少なくとも 1 冊必要です。結局のところ、基本書籍は入門用のものであり、これらの権威ある包括的なコンテンツを使用して、これまでに学んだデータ構造の知識ポイントにギャップがないか確認することができます。
ステップ 4: 徹底的な学習だけが本当に退屈で複雑な場合はどうすればよいですか? 次に、数字当てゲーム、0/1 ナップザック問題、迷路などの現実の例を分析します。ウォーキング、エイトクイーン問題、フルマイナスサムシングル問題など。たとえば、数字当てゲームで、どうすれば最短時間で正しい数字を当てるかを考えるには、二分探索を使用することが考えられます。さて、二分探索の問題を自問してみましょう。このプロセスでは、なぜなのかを自問する必要があります。この方法でのみ、知識レベルが拡張されます。たとえば、二分探索で重複データがある場合、それをどのように解決しますか?
それでも強調したいのは、なぜなのかを自問する必要があるということです。なぜなら、心理学的に言えば、人間の脳は抵抗最小の原則に従っているからです。つまり、考えることは最もやりたくないことであるため、ここで私たちはこうしなければなりません。逆に進むと、さらなる突破口を開くことができます。上記 2 段階で問題がないと思われる場合は、次の 3 段階目のデータ構造の取得に進みます。第 3 段階: データ構造の取得
最初のステップ: この時点では、データ構造について多くのことを学ぶことができますが、適用するのは難しいですが、実際の問題にどのように適用できるでしょうか?断片化した知識ポイントはすでにノートにまとめられていますか?次はどうする?マインドマップを使用して知識を体系的に整理することができ、復習や定着のさらなる強化に役立ちます。
第 2 ステップ:上記を体系化した後、Google または Baidu にアクセスして、明確な解決策を持つ実際の問題を検索し、分析と研究に使用します。多くの問題には複数のデータ構造が関係します。以前に解決したのは 1 つのデータ構造だけでした。次に、配列やリンク リストなどのデータ構造間の接続を自分で確立してみます。それぞれのデータ構造には長所と短所があります。学習すると、あるデータ構造の利点が、別のデータ構造の欠点とまったく同じであることがわかります。配列はメモリ空間内で連続しているため、CPU キャッシュに適していますが、リンクされたリストはメモリ内の断片化されたメモリ空間であるため、CPU キャッシュには適していません。 . フレンドリーですが、リンクされたリストは動的に展開できますが、配列は動的に展開できません。
別の例として、プログラムの効率を向上させるためには、別のデータ構造をより多くのメモリ空間を消費するデータ構造に置き換える必要があります。メモリが不足していて実行効率が高くない場合は、メモリを節約して実行効率を高めることができます。大量のメモリを消費し、高速に実行されるデータ構造を、わずかに低位のデータ構造に置き換えることができます。
ステップ 3: 実際の問題を学んだデータ構造に変換する方法を学びます。変換するにはどうすればよいですか?例: あなたがエンジニアだったら、リンク リストをキャッシュするアルゴリズムを最適化するという問題をどのように解決しますか?まず問題を、リンク リストについて学習したデータ構造に変換しましょう。これで、リンク リストがあることがわかりました。リンク リストを使用してどのような操作が実装されるでしょうか?データの削除、データの検索、データのキャッシュにはすべて検索が含まれ、リンクされたリスト全体を走査する必要があり、時間計算量は O(n) です。
では、検索を最適化できないか?問題やデータの特性に基づいて、適用可能なデータ構造を見つけます。キャッシュの 3 つの操作には、データの高速な挿入、削除、クエリが含まれます。私たちの頭の中で素早く取得、削除、クエリできるデータ構造とは何でしょうか?バランスのとれたバイナリ ツリー、ハッシュ テーブル、スキップ テーブルなど。たとえば、ハッシュ テーブルを選択した場合、最終的に時間計算量が大幅に最適化されているかどうかを分析します。そうでない場合は、パフォーマンス分析のために別のデータ構造に変更します。
学習したデータ構造の基本的な動作分析に実際の問題を段階的に分解し、データ構造の長所、短所、パフォーマンス分析を使用することは難しくありません。解決策はありませんが、企業で遭遇する実際の問題は、私たちが実践で使用する実際の問題よりも複雑であることがよくあります。
関連する推奨事項: プログラミング ビデオ コース
以上がデータ構造を独学で学ぶ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。