算法笔记
未读
Strassen矩阵乘法
介绍 根据公式,将原有的8个问题换成七个问题,使得时间复杂度降低 两个矩阵A B相乘时,将A, B, C分成相等大小的方块矩阵 C的话为 改进后的公式 时间复杂度能够降低到 $O(n^{log_27})=O(n^{2.807})$ 代码 #i
算法笔记
未读
程序设计:算法和数据结构-笔记7——二叉搜索树
搜索树 定义 搜索树是一种可以进行插入、搜素、删除等操作的数据结构,可以用作字典或优先级队列。二叉搜索树属于最基本的搜索树。 性质 设x为二叉搜索树的结点,如果y是x左子树的结点,那么y的键值小于等于x的键值。如果z是x的右子树中的结点,那么x的键值小于等于z的键值。 如图所示 当数据进行插入或者删
算法笔记
未读
程序设计:算法和数据结构 笔记6——树形结构
树结构 树结构是一种数据结构,由节点(node)以及链接节点的边构成(edge) 基础概念 根 如果一棵树具有一个名为“根”(root)的特殊节点,那么这棵树被叫做有根树(rooted tree) 父结点子结点 有根树的节点之间具有父子关系。设一棵有根树T,他的根r到结点x的路径上的最后一条边连接结
算法笔记
未读
程序设计:算法和数据结构 笔记5——高等排序
归并排序 过程有些复杂,先来张动图掩饰下尴尬。 过程 将给定的包含n个元素的局部数“分割”成两个局部数组,每个数组各包含$\frac{n}{2}$个元素。(Divide) 对连个局部数组分别执行 mergeSort(归并)排序。(Solve) 通过merge将连个已经排序完成的数组“整合”成一个数组
算法笔记
未读
程序设计:算法和数据结构-笔记4——递归与分治
递归 递归是指自己调用自己的函数。 如下面的阶乘递归 fact(int n){
if(n==1)
return n;
return fact(n-1)*n;
}
递归函数必须要设置出口,也就是上面的 if(n==1)
return n;
分治 分治的过程
算法笔记
未读
程序设计:算法和数据结构 笔记3——搜索
概述 搜索是从数据集合中找出目标元素的处理。 线性搜索 线性搜索是从数组开头顺次访问个元素,检查给该元素是否与目标值相等。相等则返回元素位置并结束搜索。如果检查完数组还没有发现目标值,则返回一个特殊值来说明。线性搜索的算法效率很低,但适用于任何形式的数据。 二分搜索 二分搜索算法可以利用数据的大小进
算法笔记
未读
程序设计:算法和数据结构 笔记2——数据结构
概述 栈(Stack) 规则 后入先出(Last In First Out,LIFO) 操作 push(X):在栈的顶部压入元素X pop(): 从栈的顶部取出元素 isEmpty():检查栈是否为空 isFull(): 检查栈是否已满 一般情况下,栈还具有 “引用栈顶元素”和”检查栈中是否含有指定
算法笔记
未读
程序设计:算法和数据结构 笔记1
基础篇 基础概念 复杂性评估 时间复杂度:评估执行程序所需要的时间。可以估算出程序对计算机处理器的使用程序 空间复杂度:评估执行程序 所需的存储空间。可以估算出程序 对计算机内存的使用程度 “复杂度”大多数情况下是指的时间复杂度 大O表示法:大O表示法是一种评估算法效率的“标尺”,以诸如$O(n)$