算法与数据结构
文章平均质量分 58
Alex_Madison
这个作者很懒,什么都没留下…
展开
-
算法与数据结构 归并排序
归并排序归并排序是与插入排序、交换排序、选择排序不同的另一类排序方法。归并的含义是将两个或者两个以上的有序表合成一个新的有序表。二路归并排序:将两个有序表合成一个的归并叫二路归并排序归并排序既可以用于内部排序,也可以用于外部排序。二路归并的思想是将待排序记录r[0] 到r[n - 1] 看成一个含有 n 个长度为 1 的有序子表,把这些子表依次进行两两归并,得到 [ n / 2 ] 个有序的子表;再把这[n / 2] 个有序的子表进行两两归并,重复,直到得到一个长度为 n 的有序表为止。二.原创 2022-04-05 11:20:01 · 85 阅读 · 0 评论 -
Brute-Force模式匹配算法
Brute-Force算法是一种简单、直观的模式匹配算法。其实现方式是:设 s 是主串, t 为模式串; i 为主串当前比较字符的下标;j 为模式串当前比较字符的下标。令 i 的初值为 start,j 的初值为 0 。从主串的第 start 个字符 ( i = start ) 起和模式串的第一个字符 ( j = 0 )比较,若相等,则继续逐个比较后续字符 ( i++,j++);否则从主串的第二个字符起重新和模式串比较( i 返回到原位置加 1, j 返回到 0 )依此类推,直至模式串t中的每一个字符依次原创 2022-03-25 21:58:34 · 3534 阅读 · 0 评论 -
算法与数据结构 二叉树的性质
性质 1 二叉树中第 i (i >= 0)层上的结点数最多为 2i证明:用数学归纳法证明如下: (1)当i=0时,2i= 20=1,因为二叉树中的第0层只有一个根结点,所以命题正确。(2)假设对所有的 j (0 ≤ j < i) 命题成立,即第 j 层上最多有2 j个结点。下面需要证明:当 j = i时,命题成立。根据归纳假设,第 i - 1层上的结点数最多为2i-1。由于二叉树中的每个结点最多有两个孩子结点,所以第 i 层上的结点数最多是2 i-1的2倍,即当j = i 时,第 j原创 2022-03-24 10:51:38 · 1281 阅读 · 0 评论 -
算法与数据结构 树
树的定义树是由n (n >= 0)个结点所构成的有限集合当 n = 0时,称为空树;当n > 0时,n 个结点满足以下条件:(1)有且仅有一个称为根的结点;(2)其余结点可分为 m (m >= 0)个互不相交的有限集合,且每一个集合又构成一个树,这棵树称为根结点的子树。上述定义采用的是递归方式。事实上,树的层次结构体现了元素之间具有的层次关系,即对于一颗非空树,其中有且仅有一个没有前驱的结点,称为根结点。其余结点都有且仅有一个前驱,但是可以有多个后继。树的常用术语.原创 2022-03-23 19:29:22 · 2971 阅读 · 0 评论 -
LeetCode 01两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案方法一:暴力枚举最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一.原创 2022-03-21 21:32:06 · 47 阅读 · 0 评论 -
算法与结构 树结构
树结构树是n个数据结点的集合,在该集合中包含一个根结点,根结点之下分布着一些互不交叉的子集合,这些子集合是根结点的子树。树结构的基本特征:(1)在一个树结构中,有且只有一个结点没有直接前驱,这个结点就是树的根结点;(2)除根结点之外,其余每个节点有且仅有一个直接前驱;(3)每个结点可以有任意多个直接后继。树的概念父结点和子结点:每个结点子树的根称为该结点的子结点,相应的,该结点称为其子结点的父结点;兄弟结点:具有同一父结点的.原创 2022-02-14 09:45:58 · 533 阅读 · 0 评论 -
算法与数据结构 04 队列
队列队列是另一种特殊的线性表,他的特殊性体现在队列只允许在表尾插入数据元素,在表头删除数据元素。它具有先进先出后后进后出的特性。我们把允许删除的一端称为队首(front),插入的一端称为队尾(rear)不含任何数据元素的队列称为空队列。队列的插入操作,叫作入队;队列的删除操作,叫作出队。队列也是由n(n>=0)个具有相同类型的数据元素所构成的有限序列。其几本操作与栈类似:(1)清空队列 clear():将一个已经存在的队列置为空(2)判空操作 isEmpty():判断一个数列是否为.原创 2022-01-14 15:47:53 · 322 阅读 · 0 评论 -
算法与数据结构 03 匹配问题
括号匹配问题假设表达式中允许包含多种括号 {}、<>、() 和 [] ,以任意方式排列,默认() [] <> {} 全部出现并两两匹配未正确格式,出现一种确实一半为不正确格式。例如: [ ( { } ) < > ]12 3 4 5 6 7 8当计算机接受第一个括号 “[”时,它便期待与之匹配的第八个括号"]"出现,然而计算机是按顺序遍历的,下一个接收到的是第二个括号“(”,此时第一个括号“[” 只能暂时放到一边,第二个括号接收后期待与.原创 2022-01-13 16:55:59 · 120 阅读 · 0 评论 -
算法与数据结构 02 后缀表达式
中缀转后缀1.初始化:添加运算符栈opStack和存储中键结果的线性表suffixList2.从左至右遍历中缀表达式的元素3.遇到数字时,将其压入suffixList4.遇到运算符时,比较其与opStack栈顶运算符的优先级如果opStack为空,或栈顶运算符为左括号,则直接将此运算符入栈;如果优先级比栈顶运算符的高,也将运算符压入opStack;否则,将opStack栈顶的运算符弹出并压入到suffixList中,再次返回并与opStack中新的栈顶运算符相比较5.遇到括号时:(1)如果..原创 2022-01-12 17:36:38 · 156 阅读 · 0 评论 -
算法与数据结构 01 线性结构
线性表(1) 线性表是由n(n>=0)个数据元素所构成的有限序列。(2) 对于同一个线性表,其每一个数据元素的虽然有所不同,但必须具有相同的数据类型;同时,数据元素之间具有一种线性或“一对一”的逻辑关系:第一个数据元素没有前驱,这个数据元素称为开始结点;最后一个数据元素没有后继,这个数据元素称为终端结点;除了首尾数据元素之外,其他数据元素有且仅有一个前驱和一个后继。(3) 上述的逻辑关系就是线性结构。线性表就是一种线性结构。(4) 线性表的基本操作:clear():将一个已经.原创 2022-01-10 13:00:03 · 242 阅读 · 0 评论