数据结构与算法
看过的书、刷过的题
KirutoCode
给时光以生命
展开
-
《大话数据结构》用JAVA实现笔记整理
-原创 2020-06-21 17:35:46 · 2132 阅读 · 0 评论 -
《大话数据结构》第一章 数据结构绪论
文章目录第一章 数据结构绪论数据基本概念逻辑结构和物理结构逻辑结构物理结构抽象数据类型第一章 数据结构绪论数据基本概念数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的而符号集合。数据元素:是组成数据的、有意i的那个意义的基本单位。在计算机中通常作为整体处理,也被称为记录。比如人类中的数据元素是人。数据项:一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。人这样的数据元素,可以有四肢这样的数据项。数据对象:是性质相同的数据元素的集原创 2020-06-21 16:52:39 · 736 阅读 · 1 评论 -
《大话数据结构》第二章 算法
文章目录第二章 算法算法的特性算法设计的要求算法效率的度量方法时间复杂度概念多种阶最坏情况和平均情况、空间复杂度第二章 算法算法的特性算法有五个基本特性:输入、输出、有穷性、确定性和可行性输入输出:有零个或多个输入,至少有一个或多个输出有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成确定性:算法的每一个步骤都具有确定的含义,不会出现二义性可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限的次数完成算法设计的要求正确性:原创 2020-06-21 16:53:42 · 457 阅读 · 0 评论 -
《大话数据结构》第三章 线性表
文章目录第三章 线性表线性表的顺序存储结构链式存储结构单链表JAVA实现单链表静态链表JAVA实现静态链表循环链表双向链表第三章 线性表线性表定义:零个或多个类型相同的数据元素的有限序列,每个元素都前后连接,有自己固定的位置。其实就是List举例:小学生排队的时候,老师让排成一队,然后每个人记住自己前后的同学,每次就按这个方法来排队,这样的一个队列就是线性表。线性表的抽象数据类型:看起来像是一个自定义的类。线性表的顺序存储结构顺序存储结构代码:#define MAXSIZE 2原创 2020-06-21 16:56:27 · 874 阅读 · 4 评论 -
《大话数据结构》第四章 栈和队列
文章目录第四章 栈和队列结构定义和出入栈代码JAVA实现栈两栈共享空间JAVA实现双栈共享空间栈的链式存储结构JAVA实现链栈栈的应用递归斐波那契数列实现四则运算表达式求值队列循环队列链式队列第四章 栈和队列栈的定义:限定仅在表尾进行插入和删除操作的线性表,我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的叫空栈。栈又称后进先出的线性表(Last In First Out),简称LIFO结构。栈就像子弹弹夹,先放进去的后出来,最后放进去的第一个出来,后原创 2020-06-21 16:58:31 · 618 阅读 · 0 评论 -
《大话数据结构》第五章 串
文章目录第五章 串串的存储结构朴素的模式匹配算法KMP模式匹配算法KMP模式算法改进JAVA实现KMP相关第五章 串定义:串是由零个或多个字符串组成的有限序列,又叫字符串。子串和主串:串中任意个数的连续字符组成的子序列称为该串的子串,相应的包含子串的串称为主串。字串在主串中的位置就是子串的第一个字符在主串中的序号。串的比较:串的比较是通过串的字符之间的编码来进行的。串的抽象数据类型:串的存储结构串的顺序存储结构:用一组地址连续的存储单元来存储串中的字符序列。可能会在第一个或最后一个元原创 2020-06-21 17:00:49 · 576 阅读 · 0 评论 -
《大话数据结构》第六章 树
文章目录第六章 树树的定义结点的分类树的抽象数据类型树的存储结构双亲表示法孩子表示法孩子兄弟表示法二叉树特殊二叉树斜树满二叉树完全二叉树二叉树的性质二叉树的存储结构遍历二叉树二叉树遍历方法及算法前序遍历中序遍历后序遍历层序遍历推导遍历结果二叉树的建立JAVA实现普通二叉树的创建与遍历线索二叉树线索二叉树原理线索二叉树实现JAVA实现线索化与遍历树、森林与二叉树的转换树转换为二叉树森林转换为二叉树二叉树转换为树二叉树转换为森林树与森林的遍历赫夫曼树及其应用赫夫曼树定义与原理赫夫曼编码第六章 树树的定义原创 2020-06-21 17:04:31 · 725 阅读 · 1 评论 -
《大话数据结构》第七章 图
文章目录第七章 图图的定义图的顶点和边间关系连通图相关术语图的存储结构邻接矩阵邻接表十字链表邻接多重表边集数组JAVA实现邻接表/矩阵的创建图的遍历深度优先遍历广度优先遍历JAVA实现深度/广度遍历最小生成树Prim算法Kruskal算法JAVA实现Prim算法最短路径Dijkstra算法Floyd算法JAVA实现Dijkstra和Floyd算法拓扑排序拓扑排序算法JAVA实现拓扑排序关键路径关键路径算法JAVA实现关键路径第七章 图图的定义定义:图是由顶点的有穷非空集合和顶点之间边的集合组成,通常原创 2020-06-21 17:07:09 · 792 阅读 · 0 评论 -
《大话数据结构》第八章 查找
文章目录第八章 查找定义顺序表查找JAVA实现顺序查找有序表查找折半查找插值查找斐波那契查找(没理解)JAVA实现有序表查找线性索引查找稠密索引分块索引倒排索引二叉排序树二叉排序树的查找二叉排序树插入操作二叉排序树删除操作二叉排序树总结JAVA实现二叉排序树查找、插入、删除平衡二叉树AVL平衡二叉树实现原理平衡二叉树实现算法JAVA实现平衡二叉树相关多路查找树(B树)2-3树2-3-4树B树B+树(没看)散列表(哈希表)查找概述散列函数的构造方法处理散列冲突的方法散列表查找实现散列表查找性能分析JAVA实现原创 2020-06-21 17:08:26 · 561 阅读 · 0 评论 -
《大话数据结构》第九章 排序
文章目录第九章 排序排序的基本概念和分类冒泡排序冒泡排序优化JAVA实现冒泡排序简单选择排序JAVA实现简单选择排序直接插入排序JAVA实现直接插入排序希尔排序JAVA实现希尔排序堆排序堆排序算法JAVA实现堆排序归并排序归并排序递归实现归并排序非递归实现JAVA实现归并排序快速排序快速排序优化优化选取枢轴优化不必要的交换优化小数组和递归操作JAVA实现快速排序及优化第九章 排序排序的基本概念和分类排序的稳定性:当ki=kjk_i=k_jki=kj时,如果排序前ri,rjr_i,r_jri,原创 2020-06-21 17:12:24 · 610 阅读 · 0 评论