第1章:学习数据结构之长道漫漫第一步

第一章 欢迎学习《玩转数据结构》

1-1 欢迎学习《玩转数据结构》
1-2 学习数据结构(和算法)到底有没有用?
1-3 关于课程学习的更多注意事项
1-4 课程编程环境搭建


1-1 欢迎学习《玩转数据结构》
数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据或者修改数据。

数据结构可以分为三种结构:
(1) 线性结构:数组;栈;队列;链表;哈希表…
(2) 树结构:二叉树;二分搜索树;AVL;红黑树;Treap;Splay;堆;Trie;线段树;K-D树;并查集;哈夫曼树…
(3)图结构:邻接矩阵;邻接表…

我们需要根据应用的不同,灵活选择最合适的数据结构。

举几个栗子:
A。数据库:为了实现数据存储需要的知识:树结构 (AVL,红黑树,Treap,伸展树,B树)、哈希表
B。操作系统:为了实现操作系统快速在多任务间切换需要的知识:系统栈、优先队列(堆)
C。文件压缩:哈夫曼树
D。通讯录:查找联系人功能:使用Trie前缀树
E。游戏:最典型的是寻路算法。图论算法;DFS(使用栈),BFS(使用队列)

数据结构+算法=程序

课程设置
面向基础:递归、调试、简单的复杂度分析
手把手的底层实现,创建属于自己的小型的数据结构库
强调比较和优化

面向面试:数组、栈、队列、链表、二分搜索树、堆
面向竞赛:线段树、Trie、并查集
面试和竞赛(leetcode)
稍微复杂一些:AVL、红黑树、哈希表

1-2 学习数据结构(和算法)到底有没有用?
随着现在工具越来越发达,我们使用现有的开发工具来拼凑出一个产品实际上是越来越容易的,甚至这部分工作以后不需要计算机专业的同学来做,因为工具已经足够的简单,足够的发达,创造产品的人将从技术细节中解放出来,会把更多的精力放在创意,产品设计,交互体验等等这些方面。

大量使用数据结构和算法的地方有:
底层的操作系统:Windows, macOS, Linux
移动操作系统的开发和优化:android, iOS
不同的数据库:redis, oracle, MySQL, mongoDB
不同的语言、不同的开发环境:java, swift, xcode
以及搭建在以上内容之上的各种各样的框架etc

越大的公司,越需要拥有扎实的数据结构(和算法)功底的同学;学好数据结构,能够大大提高你的技术上限,才能在计算机科学这条职业道路上走的更远。

1-3 关于课程学习的更多注意事项
《算法与数据结构》与这门课的区别:

  1. 内容重叠程度低 (二分搜索树、堆、并查集)
  2. 各种排序算法的比较:选择排序、插入排序、归并排序(自底向上,自顶向下)、快速排序(单路、双路、三路)、堆排序
  3. 涉及图算法:连通性、寻路、Prim、Kruskal、无向图最短路径、Dijkstra、Bellman-Ford

本课程语言上:选择Java,完全面向对象

关于脚本语言的特殊性:如JS, Python等
个人认为:脚本语言可以用来学习数据结构的原理,但是不适合用于考察数据结构(和算法)的性能(因为对于脚本语言来说,你写出来的逻辑它的性能怎样不仅仅和你的逻辑相关,还非常依赖于脚本语言的解析器对不同的写法解析上的不同,如python的生成表达式)

面向面试:数据结构知识面试的一部分,甚至只是算法面试的一部分
竞赛涵盖的内容更广泛,深度也更高:图论、计算几何、组合数学、概率、更复杂的算法和数据结构

1-4 课程编程环境搭建
Java语言(Java8):课程代码本身对Java语言版本并没有太多要求
推荐IntelliJ IDEA

每节课上完了都做好笔记,做好总结,慢慢进步。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值