随笔分类 - 数据结构与算法
这是数据结构与算法的笔记,以便能够帮助到自己
摘要:最长公共子序列 目录 "定义" "问题引进" "思想构成" "动态规划" "解决问题" "代码" 接下来我们来学习一下最长公共序列。 定义 最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是:一个序列S,如果分别是两个或多个已知序列的子序列,且是所有符
阅读全文
摘要: 链栈的实现 栈可谓是一种简单的数据结构,在 C++ 有库函数可以调用 我们也可以亲手写一个链栈。链栈的实现形式是通过链表来储存,使用单向链表,使用头插法,头的位置称之为栈顶,其尾部的位置成为栈底。 栈的操作有 进栈 , 出栈 , 判空 , 访问栈顶 等操作。自己写栈的结构可以添加自己需要的
阅读全文
摘要:线性表顺序存储 我们来谈一下线性表的顺序储存结构 图示: ![photo_ex][photo_ex] 定义: 由 n (n =0)个数据特性相同的元素构成的有限序列称为线性表 线性表中元素的个数 n (n =0)定义为线性表的长度,n = 0 时称为空表 特点: 而对于一个非空的线性表来说,通常具有
阅读全文
摘要:欧几里得算法 现在,我们来学习一下欧几里得算法。 欧几里得算法又称辗转相除法,主要用于算求两个正数之间的最大公约数。对于最大公约数这个名称,其英文名称为(Greatest Common Divisor),故下面就用 gcd 来表示最大公约数的代称。 百度百科上定义:用较大数除以较小数,再用出现的余数
阅读全文
摘要:本次我们来讲述快速幂乘法 快速幂乘法相对于普通的乘法有很大的时间复杂度优化,其原因是基于位运算的一种算法,空间复杂度能够减少到O( log N )级别。而普通的乘法,则是O( N ) 级别。 下面来看一下代码: 代码解释 首先来看一下快速幂的函数。该函数需要两个参数,a和b。a为底,b为次幂,所计算
阅读全文