学习方法:ppt+csdn博客查阅+编程实践(未完成)
一、基本概念与T(n)计算
数据结构:数据表示+相关操作
程序=算法+数据结构
软件=程序+文档
计算机计算分类:数值计算、非数值计算(充分利用数据结构)
算法与数据结构相互依赖:
(1)数据上的算法决定如何构造和组织数据(算法→数据结构)
(2)算法的选择依赖于作为基础的数据结构(数据结构→算法)
ADT:抽象数据类型,是数据结构作一个软件组建的实现
ADT的逻辑形式:ADT给出的数据项的定义
ADT的物理形式:数据结构中对数据项的实现。如 typedef Binary Tree{};Tree1 //这是逻辑形式 Tree::Delete()//这是物理形式
数据结构:内存中的数据组织。
文件结构:外存中的数据组织。
四种基本数据结构:11、线性结构(线性表、栈、队列);2、树形结构;3、图形结构;4、集合(元素属于一个集合,但之间没有关系)
逻辑结构与物理(存储)结构:
1、表示数据之间的逻辑关系
2、表示数据逻辑结构在计算机的存储器中的实现。分为顺序存储、链式存储、索引存储、散列存储。
存储密度=数据所占存储单元/结点所占存储单元
数据操作分类:
1、初始化操作;2、销毁操作;3、引用操作(不改变结点);4、加工操作(改变)
算法:
评价算法:1、时间效益2、空间效益3、可读性与可维护性
渐进(n->∞)时间复杂度:基本操作重复执行的次数:T(n)=O(f(n))
空间复杂度S(n)=O(f(n))
内外循环有牵连的T(n)计算方法:用Σ(sigma)由里向外求
常见渐进时间复杂度
常数阶
O(1)
对数阶
O(log
2n)
线性阶
O(n)
线性对数阶
O(nlog
2n)
平方阶
O(n
2)
立方阶
O(n
3)
……
k
次方阶
O(
n
k)
指数阶
O(2
n)
关于递归:
1、定义递归(阶乘)
2、数据结构递归(链表)
3、解决方法递归(汉罗塔)