1.为什么要学习数据结构与算法
在还没有认真的学习数据结构之前,我也在一直思考,大学期间的代码编写能力,所有的业务逻辑,都是已实现功能为主。甚至都是连基础的逻辑算法题都写不出来,很长一段时间内都没有正视这个问题,我到底为什么要学习数据结构,网络上都说,学习算法数据结构是程序员的内功,学习计算机网络和操作系统是作为一程序员必须要学的基础知识,专科阶段学校没有开设这些课,自己虽然参加竞赛,但是也是业务层相关的知识,自己也是从来没有正视过这些问题:
- 没有开设为什么自己不主动去学
- 所有的业务逻辑为什么就只着眼于实现功能不进行优化
- 为什么在自学的过程中总想着偷懒
- 为什么我现在连最基本的写代码都沉不下心来
这些问题都是我值得思考的,如果遇到问题没有总结,总结完之后没有解决,也许计算机就不适合我这一个慵懒不思进取的人。
我并不想做一辈子CRUD,把本该做好的事情做好之后,要进步!!!
2.什么是数据结构与算法
什么是数据结构?什么是算法?
数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
那数据结构和算法有什么关系呢?
数据结构是为算法服务的,算法要作用在特定的数据结构之上。
3.数据结构和算法需要学什么
- 最常用的算法和数据结构:“是什么”,“为什么”,“怎么做”
- 首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。
数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法 - 基础是数据结构有:数组,链表,栈,队列,散列表,堆,二叉树,图,跳表,Trie树
- 基础的算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配。
4.怎么学数据结构与算法
- 边学边练,每周花点时间将三节的内容涉及到的数据结构和算法实现一边,用C和JAVA都实现一遍,中间遇到的所有问题都总结。适度刷图。
- 多问,多思考,多互动,学习最好的方法就是找几个人一起学习,一块讨论切磋。
- 最怕就是,三天打鱼两天晒网,坚持不下去,这样需要给自己设定目标,在学完每次课后都整理一份笔记。
- 沉淀,不要基于就成,看一遍学不懂没关系,如果一遍就能够看懂的话,也许就不是这个样子,要正视自己,看不懂很正常,既然当不了天才,那就像小李一样当勤奋的人,虽然不会幻术和忍术,用体术的成为一名忍者。
思考一下,我现在能做什么。
计算机专业专科毕业,专升本成功,二本院校,目标是考研,南京邮电大学。
英语,四级三百多分,需要提升的地方非常多。
数学,专科三年完全没有学过,虽然高考数学有一百多但是三年没有学数学,要学好也是要花大功夫。
政治,虽说在学校里面有点政治觉悟,入了党,考研政治就是一个学习态度,端正态度,努力勤奋。
专业:到目前为止已经学过一边的知识(学是学了就是没有掌握)
- C语言:专升本考试学的
- C语言概述
- 数据类型、运算符与表达式
- 逻辑运算和分支结构
- 循环结构
- 函数,预编译
- 指针
- 结构体和共同体(还没学完)
- 文件(压根没学了)
- 计算机基础
- 计算机基础知识
- 计算机硬件系统
- 计算机软件系统
- office基本操作(还没到二级难度)
- 计算机网络
- 数据库系统(access)
- JAVA
- java基础:数据类型、变量与常量、运算符、字符串、输入输出、流程控制、数组
- 类与对象
- 继承、封装、多态
- 反射
- 接口
- 异常
- 泛型
- 集合
- 并发,IO
- jdk8的一些新特性,stream,lambda表达式等
虽然java学了很多遍,感觉还是迷迷糊糊,懵懵懂懂,说是说学了吧,但是啥又不懂,JVM,这些就没学了
- web
- HTML5+CSS3
- jQuery+ajax
- VUE
- node
- 数据库
- MYsql
- mongodb
- spring
- spring
- springMVC
- Mybatis
- springboot
- scala、spark、hive、Hadoop
- python
- python的基本语法
- 爬虫scrapy
- Django
- pandas+numpy
感觉是学了很多东西,但是仅仅只能算的了解一部分,导致我现在非常迷茫,很多东西仅仅只是掌握的皮毛,计算机一些基本的数据结构,计算机网络这一方面就没有学,这也是在专科的学习生活的一种不足,以升本为起点,在这两年里面打好基础,考上南京邮电大学的大数据方向的研究生。冲!