数据结构是计算机存储、组织数据的方式,是指数据相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率,数据结构往往同高效的检索算法和索引技术相关。
程序能否快速而高效的完成任务,取决于是否选对了数据结构;而程序能否清楚正确的把问题解决,取决于算法
总结:算法是为了解决实际问题设计的,数据结构是算法需要处理问题的载体
-
基本数据结构(内存中真实存在)
数组、链表
-
抽象数据结构(内存中并不存在,由程序员利用数组/链表封装成的结构)
栈、队列、树、图、哈希表、堆
- 十大排序算法:冒泡、选择、插入、希尔、归并、快排、堆、计数、桶、基数
- 搜索算法:深度优先遍历、广度优先遍历、二分搜索
- 贪心
- 回溯
- 动态规划
- 大话数据结构(基础)
- 数据结构与算法分析Java版(简洁、深入、还包括java底层实现原理,推荐)
- 第一遍:按tag刷,先思考,然后看参考答案,总结本题的类型,思考方式,最优题解
- 第二遍:总结题型,寻找一题多解,一解多题
理解了再开始写代码,学习的过程就是模仿的过程,刚开始刷题没思路很正常。建议初学者不要对一道题死磕到底,想几分钟没有思路就去看解析;因为对于初学者来说,重要的不是做出来几道题,而是尽可能多的积累算法技巧。
以下是解题四步骤:
-
模拟:模拟题目的运行(画图)
-
规律:尝试总结出题目的一般规律与特点(理解)
-
匹配:匹配找到符合这些特点的数据结构与算法
-
边界:考虑边界情况
-
深度:这种解法还可以怎么优化
-
广度:这种解法具有普适性吗?可以推广吗?
- 单个知识点掌握
- 多个知识点融合
- 重在基础变形
- 模拟操作多动笔
- 多种情况有案例
- 方案明确再编程