数据结构概述
1.什么是数据结构
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
2.数据的存储结构
1)顺序存储结构
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表。
2)链式存储结构
链式存储结构:是把数据元素存放在内存中的任意存储单元里,也就是可以把数据存放在内存的各个位置。这些数据在内存中的地址可以是连续的,也可以是不连续的。
3.数据的逻辑结构
1)集合结构
集合结构中的数据元素同属于一个集合,他们之间是并列的关系,除此之外没有其他关系。
2)线性结构
线性结构中的元素存在一对一的相互关系。其中有数组、栈、队列、单链表、循环链表、双链表、递归
3)树形结构
树形结构中的元素存在一对多的相互关系。
4)图形结构
图形结构中的元素存在多对多的相互关系。
排序算法
1.时间复杂度和空间复杂度
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)= O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。
算法的空间复杂度通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式记作:S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。
2.八种常见的排序算法
交换排序
冒泡排序
快速排序
插入排序
直接插入排序
希尔排序
选择排序
简单选择排序
堆排序
归并排序
基数排序
3.八种排序算法的对比
树结构
1.树的基本概念
根节点、双亲节点、子节点、路径、节点的度、节点的权、叶子节点、子、层、树的高度、森林
2.二叉树
1)什么是二叉树
满二叉树:所有叶子节点都在最后一层,而且节点的总数为:2^n-1,n是树的高度
完全二叉树:所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点都在左边连续,倒数第二层的叶子节点在右边连续
2)链式存储的二叉树
3)顺序存储的二叉树
顺序存储的二叉树通常情况下只考虑完全二叉树
第n个元素的左子节点是:2n+1
第n个元素的右子节点是:2n+2
第n个元素的父节点是:(n-1)/2
3.线索二叉树
线索化二叉树分为三种,分别为前序、中序和后序
线索化二叉树时,一个节点的前一个节点,叫前驱节点
线索化二叉树时,一个节点的后一个节点,叫后继节点
4.赫夫曼树
1)赫夫曼树概述
最优二叉树:它是n个带权叶子结点构成的所有二叉树中,带权路径长度最小的二叉树。
树的带权路径长度WPL(weighted path length):树中所有叶子结点的带权路径长度之和。
2)赫夫曼树的代码实现
取出根节点权值最小的两颗二叉树
组成一颗新的二叉树,前面取出来的两颗二叉树是新二叉树的两个子树
根节点的权值是前两个取出来的两颗二叉树的根节点的权值之和
5.二叉排序树(二叉搜索树)
6.AVL树
1)概述
平衡二叉树:任何一个节点,左子树和右子树的高度差的绝对值不超过1
7.多路查找树
图结构
1.图的基本概念
邻接、路径、有向图和无向图、带权图
2.图的遍历
深度优先搜索算法和广度优先搜索算法