随笔分类 - 数据结构与算法
摘要:子问题: 国王需要根据两个大臣的答案以及第9座金矿的信息才能判断出最多能够开采出多少金子。为了解决自己面临的问题,他需要给别人制造另外两个问题,这两个问题就是子问题。 思考动态规划的第一点 最优子结构: 国王相信,只要他的两个大臣能够回答出正确的答案(对于考虑能够开采出的金子数,最多的也就是最优的同
阅读全文
摘要:回溯法解题的关键要素 回溯法解题的关键要素 确定了问题的解空间结构后,回溯法将从开始结点(根结点)出发,以深度优先的方式搜索整个解空间。开始结点成为活结点,同时也成为扩展结点。在当前的扩展结点处,向纵深方向搜索并移至一个新结点,这个新结点就成为一个新的活结点,并成为当前的扩展结点。如果在当前的扩展结
阅读全文
摘要:排序 1.主存能放下的数据进行排序称为内部排序,反之称为外部排序(磁盘上)。2.任何进行交换相邻元素进行排序的算法均需要O(N2)的复杂度,任何进行比较的排序算法至少需要O(N*log(N))的算法复杂度。 3.堆排序和归并排序的时间复杂度平均和最坏均为O(N*log(N)) 4.Java中执行一次
阅读全文
摘要:1.哈希表最重要的作用是实现O(1)效率的查找,首先有一个哈希函数确定元素在表中的位置;其次是解决冲突,其实现主要有两种: (1)链地址法:数组+链表 (2)探测法(开放地址法,线性、二次):哈希函数为 H[i](x)= (hash(x)+f(i)) mod TableSize 。H[i](x)为表
阅读全文
摘要:1. 此前二叉搜索树相关的内容我们均假设可以把整个数据结构存储在计算机的内存中,但是如果数据量过大时,必须把数据结构放在磁盘上,导致大O模型不在适用。目前计算机处理器每秒至少可以执行5亿条指令,磁盘访问一次需要大概10ms,1s可访问100次左右;这就意味着一次磁盘访问相当于执行50万条指令。所以导
阅读全文
摘要:二叉树的一些定义: 树的高度:节点到页节点的最大长度。 树的深度:节点到根节点的长度。 树的遍历: 总是首先判断节点是否为空,三种递归遍历方式的时间均为O(N)。 1.二叉搜索树 左子小于根小于右子,平均深度O(logN),增删改查所需的操作均为O(logN)。 删除操作主要考虑有两个儿子的情况,一
阅读全文
摘要:1.机器学习主要是通过计算机在已有的数据上(经验)产生相应的模型(学习算法),在面临新的情况时,模型能给出相应的判断。所以说机器学习是研究学习算法的学问。 2基本术语 2.1以西瓜是否成熟为例,(色泽=青绿;根蒂=蜷缩;敲声=浊响)这一条记录称为一个示例或样本sample。样本组成的集合称为数据集;
阅读全文
摘要:1.贪婪算法的第二个应用为 哈夫曼编码 来进行文件压缩。 文件压缩的主要问题是给文件中的所有字符分配能唯一识别的编码(n个比特),如果我们事先知道所有字符出现的频率,把频率最高的放在最上层,频率低的放在左侧最下层,这就是最优编码。 2.编码树,所有字符都放在叶节点上,往左走的每条路径代表0,往右走的
阅读全文
摘要:之前对查找算法做的一些简单总结与实现: 查找算法时间复杂度: 1.二分查找的实现(待补充) public class Test { //循环实现二分查找 public static int binary(int[] array,int value){ int low=0; int high=arra
阅读全文
摘要:之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录。 1.排序算法时间复杂度、稳定性分类: 2.排序算法问题描述与实现 2.1冒泡排序(交换排序-稳定) 【问题描述】对于一个
阅读全文

浙公网安备 33010602011771号