名词基本概念
1、数据:对客观事物的符号表示;
2、数据元素:数据的基本单位;
3、数据结构:相互之间存在一种或多种关系的的数据元素的集合;(关系通常有:集合、线性结构、树形结构、图状结构)
4、数据存储结构:顺序存储结构(顺序映像)、链式存储结构(非顺序映像);
5、时间复杂度: T(n)= O(f(n))算法中基本操作重复执行的次数是问题规模n的某个函数f(n),成正比。
6、空间复杂度:算法所需的存储空间 S(n) = O(f(n));
数据结构
一、线性表:n个数据元素的有限序列(最简单的数据结构)
特点:在非空有限集中
a、存在唯一的一个呗乘坐“第一个”的数据元素
b、存在唯一的一个呗乘坐“最后一个”的数据元素
c、除第一个之外,集合中每个数据元素均只有一个前驱;
d、除最后一个之外,集合中每个数据元素均只有一个后继;
1、栈和队列是两种重要的线性结构。
栈:限定仅在表尾进行插入或删除的线性表。应用:数制转换、括号匹配检验、行编辑程序、迷宫求解、表达式求值。
2、队列:先进先出的线性表。(链队列与循环队列)
二、非线性表
度:结点拥有的子树数成为结点的度,可理解为横向的宽度;
深度:树中结点的最大层数,可理解为纵向深度。
1、二叉树:每个节点至多只有两棵子树,子树有左右之分,不能次序颠倒。
2、遍历
a、先序遍历:根结点-左子树-右子树
b、中序遍历:左子树-根结点-右子树
c、后序遍历:右子树-根结点-左子树
先序+中序、中序+后续可以唯一确定一棵二叉树
3、最优二叉树–赫夫曼树构造(应用:最佳判定算法。主要跟概率有关的可能就会用到)
a、根据给定的n个权值{w1,w2,w3,…wn}构成n棵二叉树集合F = {T1,T2…Tn},其中没棵二叉树Ti中只有一个带权为wi的根结点,其左右子树均为空。
b、在F中选取连个可根结点权值最小的树作为左右子树构造一棵新的二叉树,并且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。
c、在F中删除这两棵树,同时得到新的二叉树加入F中。
d、重复b、c直到F为一棵树为止。
常用算法、排序
算法的好坏度量:时间复杂度(衡量算法执行时间量级)、空间复杂度(衡量算法数据结构所占存储以及大量的附加存储)、和算法的其他性能。
1、顺序查找:从表中最后一个记录开始从后往前找,若某个记录的关键字和给定值相等查找成功,找完了i=0是还没匹配,查找失败。
2、折半查找:先确定待查找记录的所在范围区间,然后逐步缩小范围知道找不到该记录为止。(low mid hight三个指针,给定值与mid值比较大于右边,小于找左边,依次循环此操作)比较次数log2n + 1,其实为二叉树的深度。
3、哈希表(哈希函数)
建立一个确定的对应关系f,使每一个关键字和结构中一个唯一的存储位置相对应。f为哈希函数,哈希函数构造方法有:直接定址法、数字分析法、平方取中法、除留取余法、
4、直接插入排序
5、冒泡排序
6、快速排序
未完待续!!!