Processing math: 100%

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

摘要:树状数组又称二叉索引树(Binary Indexed Tree),1994年由Fenwick发明。多用于高效计算数列的前缀和, 区间和。可以以O(logn)的时间得到任意前缀和,并且可以在O(logn)时间内修改单点的值。其空间复杂度是O(n)。 思想 我们有一个数组 A,对它进行如 阅读全文
posted @ 2021-11-07 15:52 Glaci 阅读(90) 评论(0) 推荐(0) 编辑
摘要:hash表 计算机科学中,hash table是一种重要的数据结构,它可以将键映射到值。键值通过hash函数计算后,就得到它对应的值在数组中的位置。哈希也被意译为散列。 图为 用hash表实现的电话簿。 理想情况下每个键值都有属于自己的位置,但实际的哈希函数却不能做到完美,因此会导致哈希冲突,也即不 阅读全文
posted @ 2021-09-17 22:11 Glaci 阅读(256) 评论(0) 推荐(0) 编辑
摘要:前言 排序种类繁多,大致可以分为两大类: 比较类排序:属于非线性时间排序,时间复杂度不能突破下界 O(nlogn); 非比较类排序:能达到线性时间 O(n),不是通过比较来排序,有基数排序、计数排序、桶排序。 了解一个概念:排序的稳定性 稳定是指相同大小的元素多次排序能保证其先后顺序 阅读全文
posted @ 2021-03-13 15:39 Glaci 阅读(186) 评论(0) 推荐(0) 编辑
摘要:没有在博客园排版了,用的notion排版,详解二叉树的遍历。感谢阅读。 阅读全文
posted @ 2020-09-23 15:47 Glaci 阅读(159) 评论(0) 推荐(0) 编辑
摘要:什么是递归? 递归其实很简单,比如你想求D的值(D可以是一个表达式),但是现在只知道A的值,D可以通过C得出,C又可以通过B得出,B又能通过A得出,那么最终你可以求出D。求D的过程就是一个递归,A就是这个递归的基本条件,也可以说是终止条件。 递归就是要求一个大问题时,将其向下分解为求小问题,直到分解 阅读全文
posted @ 2020-08-21 09:34 Glaci 阅读(738) 评论(0) 推荐(0) 编辑
摘要:树的典型应用有很多,比如计算机的文件系统就是一棵树,根目录就是根节点。树的重要应用之一就是搜索树,搜索树通常分为二叉搜索树和多路搜索树。 二叉搜索树 二叉搜索树是一颗有序的树,每个结点不小于其左子树任意结点的值,不大于右子树任意结点的值。二叉搜索树还有一个有趣的特性,它的中序遍历得到的是有序数列。 阅读全文
posted @ 2020-08-19 15:54 Glaci 阅读(3207) 评论(0) 推荐(0) 编辑
摘要:树 二叉树 概念 树,是一种非线性数据结构,树中的元素具有明显的层次特性。 在这种数据结构中,每个结点只有一个前驱,却可以有多个后继,类似树,只有一根主干,却可以有很多分支。通常我们研究的是二叉树,即每个结点只能分一叉的树。 二叉树我们可以表示成下图的样子,实际像一棵倒过来的树,或者像一个树根。其有 阅读全文
posted @ 2020-08-13 00:13 Glaci 阅读(429) 评论(0) 推荐(0) 编辑
摘要:·单链表反转 这次讲单链表反转,main方法: public static void main(String[] args) { // 新建链表 LinkNode l = getALinkList(5); LinkNode cur; // 若为带头节点的链表,取消这段注释 // cur = new 阅读全文
posted @ 2020-07-24 22:33 Glaci 阅读(866) 评论(0) 推荐(0) 编辑
摘要:线性数据结构就是:顺序表和链表。 其他的就是非线性数据结构,比如树,图等。线性数据结构的特点是,一对一,一个数据只有一个后继和一个前驱;而非线性数据结构则是一对多。 1、顺序表 顺序表是个逻辑概念,顺序表的相邻元素在物理位置上也是相邻的。通常我们采用数组实现顺序表,我们可能会把这两者混为一谈。数组是 阅读全文
posted @ 2020-07-24 13:55 Glaci 阅读(1068) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示