随笔分类 -  数据结构&算法

摘要:分治(divide and conquer) 分治的核心思想是分而治之,即将原问题分解成 n 个规模较小,并且结构与原问题相似的子问题,递归的解决这些子问题,然后合并结果就得到原问题的解。 从定义看,分治有些类似递归,但区别在于,分治算法是一种处理问题的思想,而递归是一种编程技巧。实际上,分治算法一 阅读全文
posted @ 2020-09-19 01:01 天上的白云贼白了 阅读(340) 评论(0) 推荐(0)
摘要:递归(Recursion) 方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。递归是一种应用非常广泛的算法(或者编程技巧),DFS深度优先搜索、前中后序二叉树遍历等都要用到递归。 斐波那契数列是典型的递归案例: F(0) = 0,F(1) = 1,F(n) = F(n-1) + F(n- 阅读全文
posted @ 2020-09-17 00:45 天上的白云贼白了 阅读(338) 评论(0) 推荐(0)
摘要:树(Tree) 如图,树是非线性表结构,E 节点是 J 节点的父节点,J 节点是 E 节点的子节点。G、H 节点的父节点是同一个节点,所以它们之间互称为兄弟节点。没有父节点的节点叫做根节点,也就是图中的节点 A。没有子节点的节点叫做叶子节点或者叶节点,比如图中的 G、H、I、J、K、L 都是叶子节点 阅读全文
posted @ 2020-09-16 00:19 天上的白云贼白了 阅读(306) 评论(0) 推荐(0)
摘要:哈希表 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数(Hash Function),存放记录的数组称做散列表。 哈希表工程实践: 阅读全文
posted @ 2020-09-15 00:00 天上的白云贼白了 阅读(269) 评论(0) 推荐(0)
摘要:栈 Stack 栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端即栈的顶端(top),对栈的基本操作有push(进栈)、pop(出栈)。 先进后出(FILO, first-in-last-out), 查询O(n) Java Stack java.lang.Object java.util 阅读全文
posted @ 2020-09-13 01:26 天上的白云贼白了 阅读(335) 评论(0) 推荐(0)
摘要:衡量不同算法之间的优劣主要是从算法所占用的「时间」和「空间」两个维度考量,即: 时间维度:指执行当前算法所消耗的时间,通常用「时间复杂度」描述。 空间维度:指执行当前算法需要占用多少内存空间,通常用「空间复杂度」描述。 时间复杂度 时间复杂度通过运行程序验证所消耗时间时,受运行环境、数据规模等因素影 阅读全文
posted @ 2020-09-06 03:14 天上的白云贼白了 阅读(724) 评论(0) 推荐(0)