大话数据结构-摘要

大话数据结构-摘要

阅读《大话数据结构》一书,总结下来一些东西;总结的比较粗,部分思想暂时理解不了,先放一放,后面通过学习其他的东西后,再回过头来消化这些知识点

1、数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合

数据的逻辑结构
1.集合结构
    属于同一集合,元素平等
2.线性结构
    元素一对一
3.树状结构
    元素一对多的层次关系
4.图状结构
    元素多对多
数据的物理结构
1.顺序存储
    元素存放在地址连续的存储单元,数据逻辑关系与物理关系一致
2.链式结构
    把数据存在任务任意的 存储单元中,地址连不连续都可以;通过指针找到相关联的数据位置

2、时间算法复杂度

推导方法
1.用常数1取代时间中的所有加法常数
2.修改的次函数中,只保留最高阶
3.如果最高阶存在且不是1,则去除与这个项相乘的常数,得到的结果就是大O阶
  • 常数阶 O(1)
int sum = 0,n=100; //执行一次
sum = sum+n; //执行一次
System.out.printf(sum); //执行一次

O(1)
  • 线性阶 O(n)
  • 对数阶 Ologn
  • 平方阶 O(n²)

3、线性表

  • 顺序存储结构
存储位置连续,插入慢,查找快(下标查找)
  • 链式存储结构
    • 单链表
    • 静态链表
    • 循环链表
    • 双向循环链表
查找慢,插入删除块;空间换时间

4、栈与队列

栈是限定仅在队尾进行插入和删除操作的线性表
作用:递归
应用:四则运算表达式求值(后缀表达式)
  • 队列
队列是只允许在一端进行插入操作,另一端进行删除操作的线性表

5、串

串是由0个或多个字符组成的有限序列,又叫字符串

  • KMP匹配算法

6、树

  • 深度
树中节点的最大层次,称为树的深度或高度
  • 表示方法
双亲表示法、孩子表示法、孩子兄弟表示法
  • 二叉树
1.每个节点最多有两颗子树,二叉树中不存在度大于2的节点
2.左右字数是有顺序的,不能颠倒
3.只有一颗子树,也要区分是左子树还是右子树

五种基本形态
	1.空二叉树
	2.只有一个根节点
	3.根节点只有左子树
	4.根节点只有右子树
	5.根节点既有左子树又有右子树
  • 特殊二叉树
1.斜树
2.满二叉树(左右节点数量完全相等)
3.完全二叉树(在某一层上,左右节点数量相等)
  • 二叉树遍历方法
1.前序
   	从根节点开始,先左边后右依次遍历
2.中序
	从最左边节点开始,先遍历根节点,后遍历右边节点
3.后序
	从最左边节点开始,先遍历右边节点,最后遍历根节点
4.层序遍历
	从根节点开始,逐层从左到右遍历

先根遍历

中根遍历
后根遍历

  • 树的应用

    赫夫曼树
    	带权路径长度WPL最小的二叉树称为赫夫曼树
    赫夫曼编码-压缩
    

7、图-Graph

图是由顶点的有穷非空集合的顶点之间边的集合组成,通常表示为: G(V,E), 其中G是一个图,V是图G中顶点的结婚,E是图G中边的集合

图中的一些定义
  • 图中数据元素称为顶点(Vertex)

  • 图结构中,不允许没有顶点

  • 图中任意两个顶点之间都有可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的

  • 边的定义

    无向边
    有向边
    

8、查找

顺序表查找
有序表查找
  • 折半查找
  • 插值查找
  • 斐波那契查找
线性索引查找
  • 稠密索引

    稠密索引是指在线性索引中,将数据集中的每个记录对应一个索引项;例:记事本
    
  • 分块索引

    块内无序,块间有序; 参考图书馆、档案馆存放书籍方式
    
  • 倒排索引

    索引项通用结构:
    次关键码
    记录号表
    
二叉排序树
平衡二叉树(AVL树)
构建思想: 每当插入一个节点时,先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡子树。在保持二叉排序树特性的前提下,调整最小不平衡子树各节点之间的链接关系,进行相应旋转,使之成为新的平衡子树
多路查找树(B树)
哈希表查找
散列技术最适合的求解问题是查找与给定值相等的记录;但是无法查找最大值、最小值等结果
散列函数的构造方法:
	1.直接定址法
	2.数字分析法
	3.平方取中法
	4.折叠法
	5.除留余数法
	6.随机数法

处理散列冲突的方法:
	1.开放定址法
		解决冲突的开放定址法称为线性探测法
		本来不是同义词却需要争夺同一个地址的情况,称为堆积
		为了不让关键字都堆积在一个区域。采用二次探测法/随机探测法 重新计算地址
	2.再散列函数法
	3.链地址法
	4.公共溢出区法

9、排序

排序分类
根据在排序过程中待排序的记录是否全部被放置在内存中,排序分为:内排序和外排序
内排序: 内排序是在排序的整个过程中,待排序的所有记录全部都被放置在内存中。
外排序: 由于排序的记录个数太多,不能同时放置在内存,整个排序过程总需要在内外存之间多次交换数据才能进行
内排序性能影响点:
	1.时间性能
	2.辅助空间
	3.算法的复杂性
内排序分为: 插入排序、交换排序、选择排序和归并排序
排序类型
冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序
  • 快速排序!!!
    • 随机快排
    • 双路快排
    • 三路快排
排序方法效率比较

排序方法比价

结尾语

  • 没有什么是不可能的,不要被条条框框限制住自己的思维
  • 如果你有梦想的话,就要去捍卫它。当别人做不到,他们就想要告诉你,你也不能。如果你想要些什么。就努力去争取。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值