Echo-Wxl / DataStructures-AlgorithmAnalysis

Data Structures and Algorithm Analysis - Java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Data Structures And Algorithm Analysis - Java

如何学习数据结构与算法 ?

1. 什么是数据结构?

数据结构是计算机存储、组织数据的方式,是指数据相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率,数据结构往往同高效的检索算法和索引技术相关。

2. 数据结构与算法的理解

程序能否快速而高效的完成任务,取决于是否选对了数据结构;而程序能否清楚正确的把问题解决,取决于算法

总结:算法是为了解决实际问题设计的,数据结构是算法需要处理问题的载体

3. 数据结构的研究对象

  • 基本数据结构(内存中真实存在)

    数组、链表

  • 抽象数据结构(内存中并不存在,由程序员利用数组/链表封装成的结构)

    栈、队列、树、图、哈希表、堆

4. 常用算法

  • 十大排序算法:冒泡、选择、插入、希尔、归并、快排、堆、计数、桶、基数
  • 搜索算法:深度优先遍历、广度优先遍历、二分搜索
  • 贪心
  • 回溯
  • 动态规划

5. 刷题

5.1 看书学习基础概念

  • 大话数据结构(基础)
  • 数据结构与算法分析Java版(简洁、深入、还包括java底层实现原理,推荐)

5.2 大方向怎么刷

  • 第一遍:按tag刷,先思考,然后看参考答案,总结本题的类型,思考方式,最优题解
  • 第二遍:总结题型,寻找一题多解,一解多题

5.3 每道题怎么分析

​ 理解了再开始写代码,学习的过程就是模仿的过程,刚开始刷题没思路很正常。建议初学者不要对一道题死磕到底,想几分钟没有思路就去看解析;因为对于初学者来说,重要的不是做出来几道题,而是尽可能多的积累算法技巧。

​ 以下是解题四步骤:

  • 模拟:模拟题目的运行(画图)

  • 规律:尝试总结出题目的一般规律与特点(理解)

  • 匹配:匹配找到符合这些特点的数据结构与算法

  • 边界:考虑边界情况

5.4 做完题后的思考

  • 深度:这种解法还可以怎么优化

  • 广度:这种解法具有普适性吗?可以推广吗?

5.5 题量

  • 单个知识点掌握
  • 多个知识点融合
  • 重在基础变形

5.6 审题

  • 模拟操作多动笔
  • 多种情况有案例
  • 方案明确再编程

About

Data Structures and Algorithm Analysis - Java


Languages

Language:Java 100.0%