【数据结构郝斌】1、概述、学习路线

来源:互联网 发布:python mako 编辑:程序博客网 时间:2024/05/22 04:36

1、数据结构概述

定义
我们如何把显示中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。(数组、链表、树、图)
数据结构研究数据如何保存,算法研究对数据的操作。数据的保存关心两个问题:个体如何保存,个体与个体关系如何保存。
  数据结构 = 个体+个体关系
  算法= 对存储数据的操作(算法依附于存储的数据构,存储的数据不同,算法不同)
算法
  解题方法和步骤

衡量算法的标准
  1.时间复杂度(大概需要执行的次数,而非执行的时间)
  2.空间复杂度(算法执行过程中大概所占用的最大内存)
  3.难易程度(容易读懂)
  4.健壮性
数据结构的地位
数据结构是软件中最核心的课程
  程序=数据的存储+数据的操作+可以被计算机执行的语言
注:书籍推荐:严蔚敏的书 、高一凡的书

2、预备知识

学习数据结构不应停留在伪算法,而应该用编程语言去实现(实现语言必须有指针)
指针
结构体
动态内存的分配和释放

跨函数使用内存问题
函数调用完,子函数中定义的变量(局部变量)会被释放。

问题:子函数中分配的内存函数结束后还能否继续使用?

3、模块一:线性结构【可以把所有的结点用一根直线穿起来】

连续存储(数组)
离散存储(链表)
链表的优缺点:
线性结构的两种常见结构2:栈
线性结构的两种常见结构1:队列
专题:递归
 1.1+2+3+4….100的和(递归与循环的转换)
 2.求阶乘
 3.汉诺塔
 4.走迷宫

4、模块二:非线性结构(实在是在复杂了)


5、模块三:查找和排序

折半查找
排序: 冒泡
插入
选择
快速排序
归并排序

6、java中容器和数据结构相关知识

iterator接口
map
哈希表

0 0