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