| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 《大话数据结构》学习笔记 -> 正文阅读 |
|
[数据结构与算法]《大话数据结构》学习笔记 |
大话数据结构数据结构的存储结构形式(物理结构)有两种:顺序存储和链式存储 逻辑结构:集合、线性、树形、图形 抽象是指抽取出事物具有的普遍性的本质 抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作 第二章 算法算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个指令 算法具有五个基本特性:输入、输出、有穷性、确定性和可行性 健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果 第三章 线性表用数组描述的链表叫做静态链表(Basic、Fortran等没有指针) 让数组的元素都是由两个数据域组成,data和cur p73 双向链表插入顺序是先搞定插入结点的前驱(prior)和后继,再搞定后结点的前驱,最后解决前结点的后继 ? 第四章 栈与队列栈的顺序存储结构、链式存储结构 逆波兰(Reverse Polish Notation,RPN)表示,一种不需要括号的后缀表达式(所有的符号都是在要运算数字的后面出现) ? 队列的顺序存储结构、链式存储结构 循环队列:队列满的条件是(rear+1)%QueueSize == front 通用的计算队列长度公式为(rear-front+QueueSize)%QueueSize 第五章 串KMP模式匹配算法next数组值推导 ? 根据经验得到如果前后缀一个字符相等,k值是2,两个字符k值是3,n个相等k值就是n+1。 nextval数组值推导 第六章 树线索二叉树(空指针域用来表示前驱和后继) 压缩编码方法--赫夫曼编码 带权路径长度WPL(Weighted Path Length)最小的二叉树称为赫夫曼树 第七章 图1.邻接矩阵 顶点--一维数组 边或弧--二维矩阵 2.邻接表 邻接表--入度 逆邻接表--出度 3.十字链表 (结合入度、出度邻接表)p234 ? ? 4.邻接多重表 ? 5.边集数组 深度优先遍历(Depth_First_Search) 广度优先遍历(Breadth_First_Search,BFS)(Queue) 最小生成树我们把构造连通网的最小代价生成树称为最小生成树 普利姆(Prim)算法p247、克鲁斯卡尔(Kruskal)算法p252 2分钟搞懂最小生成树prim算法_哔哩哔哩_bilibili 最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示_哔哩哔哩_bilibili 最短路径迪杰斯特拉(Dijkstra)算法p262、弗洛伊德(Floyd)算法 拓扑排序在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,称为AOV网(Activity On Vertex Network) AOE。。。(工程时间) typedef struct file{ ... }FileInfo, *FileP; //给struct file 取个别名为FileInfo,给struct file * 取个别名为FileP。 活动的最早开始时间和最晚开始时间相等就意味着此活动是关键活动,活动间的路径为关键路径。 第八章 查找顺序表查找设置“哨兵” ? 有序表查找折半查找、插值查找、斐波那契查找(黄金分割) ? 线性索引查找索引按照结构可以分为线性索引(稠密索引、分块索引和倒排索引)、树形索引和多级索引。 分块索引(图书馆):块内无序,块间无序 倒排索引(搜索引擎):不是由记录来确定属性值,而是由属性值来确定记录的位置 二叉排序树平衡二叉树(AVL树)平衡因子(Balance Factor)(-1/0/1) 最小不平衡子树 旋转 ? 多路查找树每一个结点的孩子数可以多于两个,且每一个结点处可以存储多个元素 2-3树、2-3-4树、B树、B+树 散列表查找(哈希表)散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。对应关系f称为散列函数,又称为哈希(Hash)函数。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(Hash table)。 两个参考原则:计算简单、散列地址分布均匀 第九章 排序1.冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。时间复杂度O(n^2) 2.简单选择排序(Simple Selection Sort)就是通过n-1次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和i(1≤i≤n)个记录交换之。 O(n^2) 3.直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。理牌 O(n^2) 4.希尔排序(Shell Sort)“分组进行选择排序”,将关键字较小的记录,不是一步一步地往前挪动,而是跳跃式地往前移 基本有序:就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间。 增量序列 等于1为止 5.堆排序(Heap Sort)“保留了之前的比较记录0” 时间复杂度O(nlogn) 大顶堆:每个结点的值都大于或等于其左右孩子结点的值;小顶堆反之 6.归并排序(Merging Sort)时间复杂度O(nlogn) 空间复杂度O(n+logn) 从每个子序列的长度为1开始两两归并...... 7.快速排序(Quick Sort)O(nlogn) 优化: 优化选取枢轴、优化不必要的交换(以替换代替交换)、小数组时用插入排序(Insertion Sort)、 优化递归操作 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:21:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |