12 2020 档案
摘要:一、图基本介绍 1,为什么要有图 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图 2,图的举例说明 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图: 3,
阅读全文
摘要:一、二叉树与B树 1,二叉树的问题分析 二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题: 问题 1:在构建二叉树时,需要多次进行 i/o 操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响 问题 2:节点海量,
阅读全文
摘要:一、堆排序 详情查看:排序算法 二、赫夫曼树 源码: 构建赫夫曼树 1,基本介绍 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 结
阅读全文
摘要:一、数组存储、链式存储与数存储 1,数组存储 优点:通过下标方式访问元素,速度快。对于有序数组,还可以通过二分查找提高检索速度。 缺点:如果检索具体某个值,或者插入值(按一定顺序)会整体移动,效率低 2,链式存储 优点:在一定程度上对数组存储有优化(比如:插入一个数值节点,只需要将插入节点连接到链表
阅读全文
摘要:一、线性查找 源码:线性查找 1,思路 线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。 2,特点 按顺序查找,数组(集合)可以无序 时间复杂度:O(N) 3,
阅读全文
摘要:一、时间复杂度 1,概念 时间复杂度:算法的时间复杂度是一个函数,他定性描述了该算法的运行时间。 大O记法:是算法的时间复杂度表达公式。简单的说大O记法可以告诉你一个算法耗费的时间长度同算法所处理的数据量大小的关系。大O记法只是一个概念性的或定性的记号,不能通过它来真正计算一个算法所耗费的精确时长。
阅读全文
摘要:一、简介 1,概念 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 2,调用机制 3,递归需遵循的规则 执行一个方法时, 就创建一个新的受保护的独立空间(栈空间) 方法的局部变量是独立的, 不会相互影响, 比如 n 变量 如果方法中使用的
阅读全文