検索
ホームページよくある問題データ構造を独学で学ぶ方法
データ構造を独学で学ぶ方法Aug 22, 2020 am 10:21 AM
データ構造

データ構造の独習方法: まず、第 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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Java中的二叉树结构详解Java中的二叉树结构详解Jun 16, 2023 am 08:58 AM

二叉树是计算机科学中常见的数据结构,也是Java编程中常用的一种数据结构。本文将详细介绍Java中的二叉树结构。一、什么是二叉树?在计算机科学中,二叉树是一种树形结构,每个节点最多有两个子节点。其中,左侧子节点比父节点小,右侧子节点则比父节点大。在Java编程中,常用二叉树表示排序,搜索以及提高对数据的查询效率。二、Java中的二叉树实现在Java中,二叉树

Python 实现栈的几种方式及其优劣Python 实现栈的几种方式及其优劣May 19, 2023 am 09:37 AM

​​想了解更多关于开源的内容,请访问:​​​​51CTO开源基础软件社区​​​​https://ost.51cto.com​​一、栈的概念栈由一系列对象对象组织的一个集合,这些对象的增加和删除操作都遵循一个“后进先出”(LastInFirstOut,LIFO)的原则。在任何时刻只能向栈中插入一个对象,但只能取得或者删除只能在栈顶进行。比如由书构成的栈,唯一露出封面的书就是顶部的那本,为了拿到其他的书,只能移除压在上面的书,如图:栈的实际应用实际上很多应用程序都会用到栈,比如:网络浏览器将最近浏览

PHP8中会支持的数据结构,将为你的代码提供更大空间PHP8中会支持的数据结构,将为你的代码提供更大空间Jun 21, 2023 am 08:13 AM

PHP是一种广泛使用的脚本语言,被广泛用于Web开发,服务器端编程以及命令行编程等。随着PHP不断更新和发展,它也日益成为一个更强大的编程工具,为用户提供了更多的功能和更多的工具来开发高质量的应用程序。其中,数据结构是一个非常重要的领域,一种有效的数据结构可以大大提高程序的性能和可读性。在这篇文章中,我们将讨论PHP8中支持的新数据结构,这些新的数据结构将让

如何解决Java中遇到的代码性能优化问题如何解决Java中遇到的代码性能优化问题Jun 29, 2023 am 10:13 AM

如何解决Java中遇到的代码性能优化问题随着现代软件应用的复杂性和数据量的增加,对于代码性能的需求也变得越来越高。在Java开发中,我们经常会遇到一些性能瓶颈,如何解决这些问题成为了开发者们关注的焦点。本文将介绍一些常见的Java代码性能优化问题,并提供一些解决方案。一、避免过多的对象创建和销毁在Java中,对象的创建和销毁是需要耗费资源的。因此,当一个方法

Java语言中的数据结构与算法介绍Java语言中的数据结构与算法介绍Jun 10, 2023 pm 01:37 PM

随着计算机科学的不断发展,数据结构与算法成为了计算机科学领域中最为基础、重要的模块。数据结构是一种组织和存储数据的方式,它是解决问题的基础。算法则是计算机科学的核心,它是指在计算机程序中解决问题的方法和技术。Java作为一种广泛应用的编程语言,其自带的数据结构和算法库是非常强大的,赋予了开发人员更多的力量。一、数据结构Java中提供了多种数据结构,包括数组

go语言有哪些数据结构go语言有哪些数据结构Dec 16, 2022 pm 02:00 PM

go语言数据结构有四大类:1、基础类型,包括整型(有符号和无符号整数)、浮点数、复数、字符串(由不可变的字节序列构成)、布尔值(只有true和false两个值);2、聚合类型,包括数组、结构体(是由任意个任意类型的变量组合在一起的数据类型);3、引用类型,包括指针、slice(是一个拥有相同元素的可变长度序列)、map、function、channel;4、接口类型。

c语言中数据结构是什么?常见数据结构有哪些?c语言中数据结构是什么?常见数据结构有哪些?Nov 03, 2020 am 11:38 AM

c语言中,数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,它是计算机存储、组织数据的方式;常见数据结构有:线性数据结构(数组、链表、栈、队列和线性表)、树形结构(二叉树、完全二叉树、二叉查找树、堆)、图形结构(有向图和无向图)。

Java语言常见算法实现方法Java语言常见算法实现方法Jun 11, 2023 pm 05:51 PM

Java语言是目前应用最广泛的编程语言之一,在计算机领域中应用广泛。在Java中,算法是一种非常重要的概念,从最初的排序算法到数据结构和算法的实现,都涉及到了Java语言的一些常用方法。本文将重点讲解Java语言中常见的算法实现方法,包括排序算法、搜索算法、字符串匹配算法以及树形结构的处理方法等,以便初学者更好的掌握Java语言的算法实现。一、排序算法排序算

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター