(1)dataStructure&Alg
文章平均质量分 80
tomjourney
积善之家 必有余庆
展开
-
java迭代实现二叉树先中后序遍历(非递归)
本文复习了通过java迭代实现 二叉树先序,中序,后序遍历;本文引入了 栈,替换了递归,对二叉树进行遍历;缺点一旦二叉树节点个数过多,可能导致栈溢出的情况显式栈,可以用 数组来实现。原创 2022-11-21 23:38:10 · 945 阅读 · 0 评论 -
算法递归简论
【0】README0.1) 本文总结于 数据结构与算法分析,旨在了解设计 递归程序 的相关法则和技巧;【1】 递归简论1.1)当编写递归例程的时候,关键是要牢记递归的四条基本法则-Principle:P1)基准情形:必须总是有某些基准情形,它无需递归就能解除;P2)不断推进:对于那些需要递归求解的情形,每一次递归调用都必须要是求解状况朝接近基准情形的方向前进;P3)设计法则:假设所有的递归调用转载 2015-11-07 11:17:21 · 1187 阅读 · 0 评论 -
算法分析
【0】README0.1) 本文总结于 数据结构与算法分析;旨在了解 算法分析涉及到的数学基础、时间复杂度分析法则、和其它的一些法则 和 结论;【1】 数学基础1.1)本书将使用以下4个定义: 对上述定义的分析(Analysis):A1)第一个定义是说T(N)的增长率小于等于f(N)的增长率;A2)第二个定义是说T(N)的增长率大于等于g(N)的增长率;A3)第三个定义是说T(N)的增长转载 2015-11-07 11:34:12 · 1147 阅读 · 0 评论 -
近似装箱问题(三种联机算法实现)
【0】README0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “近似装箱问题(三种联机算法实现)” 的idea 并用源代码加以实现; 0.2) 近似装箱问题的三种联机算法 分别是: 下项适合算法 + 首次适合算法 + 最佳适合算法 , 我们将依次给出源代码实现+算法描述;【1】近似装箱问题1.1)问题描述: 给定N 项物品, 大小为 s1, s2, …, sN, 所原创 2015-11-28 13:27:27 · 2503 阅读 · 0 评论 -
java泛型程序设计——翻译泛型表达式+翻译泛型方法
【0】README0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 翻译泛型表达式+翻译泛型方法 的知识;【1】翻译泛型表达式1.1)当程序调用泛型方法时, 如果擦除了泛型返回类型, 编译器插入类型转换;1.1.1)看个荔枝:Pair<Employee> buddies = ...Employee buddy = buddies.g转载 2015-12-07 19:05:58 · 1126 阅读 · 0 评论 -
高级数据结构实现——自顶向下伸展树
【0】README1) 本文部分内容转自 数据结构与算法分析,旨在理解 高级数据结构实现——自顶向下伸展树 的基础知识; 2) 源代码部分思想借鉴了数据结构与算法分析,有一点干货原创代码,for original source code, please visit https://github.com/pacosonTang/dataStructure-algorithmAnalysis/原创 2016-01-29 22:09:07 · 1616 阅读 · 0 评论 -
自底向上伸展树(之字形旋转+一字形旋转)
【0】README0.1) 本文总结于 数据结构与算法分析,核心剖析路线为原创, 旨在理清 自底向上伸展树(之字形旋转+一字形旋转) 的基本思路;【1】伸展树(之字形旋转+一字形旋转)1.1)定义:伸展树保证从空树开始任意连续M次对树的操作最多花费 O(M logN)时间;1.2)摊还运行时间: 当 M 次操作的序列总的最坏情形运行时间为 O(MF(N))时,我们就说它的摊还运行时间为 O原创 2016-01-15 18:58:26 · 3798 阅读 · 1 评论 -
XML——XML概述
【0】README0.1)本文描述 转自 core java volume 2, 旨在理解 XML——XML概述 的基础知识;【1】XML概述相关1)problem+solution (干货——引入XML的原因)1.1)problem:1.1.1) 属性文件的缺点一:属性文件采用的是一种单一的平面层次结构。 你常常会看到程序员用如下的键来努力解决这种局限性:title.fontname=bab转载 2016-01-24 10:52:13 · 647 阅读 · 0 评论 -
AVL树的单双旋转解析
【0】README0.0) 本文部分idea 转自:http://blog.csdn.net/collonn/article/details/20128205 0.1) 本文专注于 解析 AVL 树的 单旋转(左左单旋转和右右单旋转) 和 双旋转(左右双旋转和右左单旋转)的内部核心技巧(历时一天吧,估计); 0.2) 不得不提的是, 旋转有两个属性: 轴 和 旋转方向;【1】 如何判断进行单原创 2016-01-15 11:34:31 · 7493 阅读 · 6 评论 -
AVL树
【0】README0.1)本文给出了平衡二叉树(AVL树)的插入例程涉及到的单旋转+双旋转的概念,并给出了代码实现; 0.2)本文源代码均为原创, 当然相关idea 还是借鉴人家的;(真心有点难,这个实现起来)【1】AVL树1.1)定义: AVL树是根据它的发明者G. M. Adelson-Velskii和E. M. Landis命名的。它是一种特殊的二叉查找树; 1.2)AVL树要求: 任一节原创 2015-10-23 19:45:07 · 1092 阅读 · 0 评论 -
优先队列——斐波那契堆(without source code)
【0】README0.1) 本文部分内容转自 数据结构与算法分析,旨在理解 斐波那契堆 的基础知识; 0.2) 文本旨在理清 斐波那契堆的 核心idea,还没有写出源代码实现,表遗憾; 0.3)从实际角度看: 除了某些需要管理大量数据的应用外,对于大多数应用,斐波那契堆的常数因子和编程复杂性使得它比起普通二项堆(二项队列)并不是那样适用; 0.4)斐波那契堆(Fibonacci heap)通过转载 2016-01-24 10:24:39 · 2042 阅读 · 0 评论 -
优先队列——二项队列(binominal queue)
【0】README0.1) 本文文字描述部分转自 数据结构与算法分析, 旨在理解 优先队列——二项队列(binominal queue) 的基础知识; 0.2) 本文核心的剖析思路均为原创(insert,merge和deleteMin的操作步骤图片示例), 源代码均为原创; 0.3) for original source code, please visit https://github原创 2016-01-22 17:14:52 · 1521 阅读 · 0 评论 -
优先队列——斜堆
【0】README0.1)本文部分内容转自 http://www.cnblogs.com/skywang12345/p/3638493.html, 旨在理解 优先队列——斜堆 的基础知识; 0.2) for original source code , please visit https://github.com/pacosonTang/dataStructure-algorithmAna原创 2016-01-19 21:09:17 · 1379 阅读 · 0 评论 -
分治算法
【0】README0.1) 本文总结于 数据结构与算法分析,旨在理解 “分治算法”的idea; 【1】分治算法相关1.1)网络转载的分治法定义:分治法将问题分为一系列独立小问题,然后分别找到每个小问题的解决方案,然后把每部分的解决方案合并起来,适用于具有同类解决方案的子问题的求解; 1.2)分治法由两部分组成: 1.2.1)分(divide): 递归解决较小的问题;1.2.2)治(conque转载 2015-11-30 21:40:00 · 611 阅读 · 0 评论 -
归并排序
【0】README0.1) 本文总结于 数据结构与算法分析,但源代码均为原创;旨在理清归并排序的具体步骤; 0.2)归并排序: 它对于分析分治问题,很有代表性;【1】归并排序相关1.1)归并排序以 O(NlogN)最坏情形运行时间运行, 而所使用的比较次数几乎是最优的, 它是递归算法的一个很好地示例; 1.2)归并排序算法步骤:这个算法中基本的操作是合并两个已排序的表。因为 这两个表是已排序的原创 2015-11-05 12:09:25 · 889 阅读 · 0 评论 -
二叉堆的操作总结(insert+deleteMin+increaseKey+decreaseKey+percolateDown+percolateUp)
【0】README本文idea 均为原创, for source code, please visit https://github.com/pacosonTang/dataStructure-algorithmAnalysis/tree/master/chapter6/p140_binaryheap_conclusion 【1】insert操作// Attention, th原创 2016-01-16 21:26:28 · 4182 阅读 · 0 评论 -
Huffman编码(Huffman树)
【0】README0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “Huffman编码(Huffman树)” 的idea 并用源代码加以实现;【1】Huffman 编码1.1)贪婪算法的第二个应用: 文件压缩;1.1.1)标准的 ASCII字符集: 它由大约100个 可打印字符组成,为了把这些字符区分开, 需要 |log100|(不小于等于log100) = 7个 比特;原创 2015-11-28 09:25:26 · 1262 阅读 · 0 评论 -
算法运行时间中的对数
【0】README0.1) source code and text description are from data structure and alg analysis ; 【1】分析算法最混乱的方面大概集中在对数上面, 除分治算法外,可将对数最常出现的规律概括为下列一般法则:1.1)如果一个算法用常数时间(O(1))将问题的大小削减为其一部分(通常是1/2),那么该算法就是 O(logN);转载 2015-10-15 22:49:23 · 1628 阅读 · 0 评论 -
ReviewForJob——快速排序(基于插入排序)+快速选择(快速排序变体)
【0】README1)本文旨在给出 快速排序 的 源码实现和源码分析(分析它的坑);2)要知道 在 元素个数小于20的时候,快速排序不如插入排序,不过通常我们取这个上限为 10;3)因为 快速排序是基于分治的,这里通过递归实现了分治,每次递归后,待排序的元素个数都会减少,所以最后都是通过插入排序来完成排序的;4)快速排序基础 参见http://blog.csdn.net/pacos原创 2016-08-03 10:55:03 · 938 阅读 · 0 评论 -
ReviewForJob——桶式排序+基数排序(==多次桶式排序)
【0】README1)本文旨在 给出 ReviewForJob——桶式排序+基数排序(==多次桶式排序) 的 代码实现和代码分析;2)桶式排序基础参见 http://blog.csdn.net/pacosonswjtu/article/details/49685749, 基数排序基础参见 http://blog.csdn.net/pacosonswjtu/article/detail原创 2016-08-03 19:18:18 · 624 阅读 · 0 评论 -
B树、B+树、B*树谈到R 树
转自: https://blog.csdn.net/v_JULY_v/article/details/6530142 从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由Ju...转载 2019-01-10 07:01:31 · 307 阅读 · 0 评论 -
VC6.0下载及安装
转自: https://blog.csdn.net/weixin_37536336/article/details/81187963 希望对下载,并学习C语言的朋友,有帮助。1.绿色版:网址:https://pan.baidu.com/s/1jN70y8x6-_1XGJHESlMspA密码:sla52.企业版:网址:https://pan.baidu.com/s/1Wb...转载 2018-12-26 07:07:00 · 1053 阅读 · 0 评论 -
ReviewForJob——希尔排序(缩小增量排序)之塞奇威克增量序列
【0】README1)本文旨在给出 希尔排序(缩小增量排序)之塞奇威克增量序列 的源码实现;2)为什么要求 塞奇威克增量序列? reason1)要知道, 塞奇威克 提出了几种增量序列,最坏运行时间为 O(N^4/3),平均运行时间为 O(N^7/6); 其提出的增量序列中的最好序列是 {1, 5, 19, 41, 109, ......},该序列中的项或者是 9*4^i - 9*原创 2016-08-02 13:47:38 · 1810 阅读 · 0 评论 -
2017尼毕鲁笔试算法题
【1】题目: 给定一个无序数组,找到最长的单调自增子序列(不一定连续,但是顺序不能乱)的长度;【2】看个荔枝:给定数组 [10, 9, 2, 5, 3, 7, 101, 18] 输出结果为 [2, 3, 7, 101]。。算法时间复杂度一般为 O(n^2) 也可以优化到 O(nlgn);【3】算法思路:对无序数组做一次遍历 并找出最小最大值v1, v2及其下标i1, i2;下一次循环原创 2016-10-25 20:56:45 · 1137 阅读 · 0 评论 -
ReviewForJob——算法设计技巧(贪婪算法+分治算法+动态规划)
【0】README1)本文旨在介绍算法设计技巧包括 贪婪算法、分治算法、动态规划 以及相关的荔枝等;【1】贪婪算法1)intro: 贪婪算法是分阶段进行的,在每个阶段,可以认为所做的决定是最好的,而不考虑将来的后果;2)我们已经看到过的贪婪算法有:alg1)迪杰斯特拉算法:该算法计算单源(起点固定)有权最短路径,使用到了 二叉堆优先来选取权值最小的邻接顶点,因为每次原创 2016-08-10 09:45:18 · 2651 阅读 · 0 评论 -
ReviewForJob——深度优先搜索的应用
【0】README1)本文旨在 介绍 ReviewForJob——深度优先搜索的应用 及其 源码实现 ;2)搜索树的技术分为广度优先搜索 和 深度优先搜索:而广度优先搜索,我们前面利用 广度优先搜索计算无权最短路径已经做过分析了,有兴趣的可以参考 广度优先搜索相关3)图经过 深度优先搜索后会生成多个 树:这种树叫深度优先树,要知道多个 深度优先树就组合成了 深度优先森林了;原创 2016-08-09 14:31:05 · 2457 阅读 · 4 评论 -
ReviewForJob——二叉堆优先队列的实现(三种堆节点类型——int + struct HeapNode + struct HeapNode*)
【0】README1)本文旨在给出 二叉堆优先队列的实现 的代码实现和分析, 而堆节点类型 不外乎三种: 一, 基本类型如int; 二,结构体类型 struct HeapNode; 三,结构体指针类型 struct HeapNode* 类型;2)为什么要给出 结构体指针类型的 二叉堆实现 ?因为 小生我在 实现 克鲁斯卡尔算法 求 最小生成树的时候,需要用到 二叉堆优先队列 选取 权值原创 2016-08-06 14:48:02 · 1138 阅读 · 0 评论 -
ReviewForJob——最小生成树(prim + kruskal)源码实现和分析
【0】README1)本文旨在给出 ReviewForJob——最小生成树(prim + kruskal)源码实现和分析, 还会对其用到的 技术 做介绍;2)最小生成树是对无向图而言的:一个无向图G 的最小生成树是一个连通图,且保证该连通图 所含边的权值和最小;3)要知道 Prim算法(普利姆算法)的基本 idea 就是 迪杰斯特拉算法,下面会介绍,所以我会po 出 迪杰斯特拉算法的原创 2016-08-06 20:30:43 · 793 阅读 · 0 评论 -
ReviewForJob——拓扑排序+最短路径算法(有权+无权)
【0】README1)本文旨在给出 拓扑排序+最短路径算法(有权+无权) 的源码实现 和 分析,内容涉及到 邻接表, 拓扑排序, 循环队列, 无权最短路径,广度优先搜索,有权最短路径,二叉堆,迪杰斯特拉算法 等知识;【1】邻接表是图的标准表示方法0)图的表示方法:稀疏图用邻接表,而稠密图用邻接矩阵,而现实生活中 大多数图都是稀疏的;1)邻接表的结构体// 顶点的结构体.原创 2016-08-05 09:12:15 · 1269 阅读 · 0 评论 -
快速排序
【0】README 0.1)正如它的名字所表示的,快速排序(quicksort)是在实践中最快的已知排序算法,它的平均运行时间是O(N log N), 像归并排序一样,快速排序也是一种分治的递归算法;【1】引入三数中值(中位数)分割法1.1)方法描述:该方法的做法是使用左端、右端 和 中心位置上的三个元素组成序列的中值作为枢纽元;如输入8, 1, 4, 9, 6, 3, 5, 2, 7, 0 ;最左原创 2015-10-03 17:39:22 · 1585 阅读 · 0 评论 -
ReviewForJob——堆排序
【0】README1)本文旨在给出 推排序的源码实现;堆排序是基于二叉树的数组实现的;【1】堆排序步骤step1)对排序数据建堆,执行 n 次 insert 操作(基于上滤操作);每次 insert 包括 将 新元素插入到堆末尾,然后执行 上滤操作;step2)执行 n 次 deleteMin 操作(基于下滤操作),每一次 deleteMin 操作都包含 将 堆的根元素原创 2016-08-02 17:11:13 · 476 阅读 · 0 评论 -
优先队列——左式堆
【0】README0.1) 本文文字描述部分转自 数据结构与算法分析, 旨在理解 优先队列——左式堆 的基础知识; 0.2) 本文核心思路均为原创, 源代码部分借鉴 数据结构与算法分析 ; 0.3) for original source code, please visit https://github.com/pacosonTang/dataStructure-algorithmAnaly原创 2016-01-19 15:55:23 · 792 阅读 · 0 评论 -
ReviewForJob(3)表、栈和队列
【0】表ADT1)intro:我们把 形如 A1, A2, A3, ..., An 的结构称为表;2)表的实现: 数组 或 链表 或 双链表 或 循环链表实现;3)表的插入,删除操作可以在任意位置上进行;【1】栈(基于表)1)intro:栈是限制插入和删除只能在一个位置上进行的的表;2)栈的实现: 数组实现 或 链表实现;3)栈的应用应用荔枝1)检验代码的平原创 2016-07-31 14:49:32 · 574 阅读 · 0 评论 -
ReviewForJob(2)算法分析
【0】README1)本文旨在review 算法分析的几个算法问题 附带源码;【1】最大子序列和问题的解(两种解法——分治法+联机算法(推荐))【1.1】分治法1)intro:其思想是把问题分成两个大致相等的子问题,然后递归地对它们进行求解,这是“分”部分;“治”阶段 将两个子问题的 解合并到一起并可能再做些少量的附加工作,最后得到整个问题的解;2)算法idea 描述:原创 2016-07-31 11:55:51 · 641 阅读 · 0 评论 -
ReviewForJob(1)数据结构与算法分析引论
【0】递归简论1)当编写递归例程的时候,关键是要牢记递归的四条基本法则-Principle:P1)基准情形:必须总是有某些基准情形,它无需递归就能解除;P2)不断推进:对于那些需要递归求解的情形,每一次递归调用都必须要是求解状况朝接近基准情形的方向前进;P3)设计法则:假设所有的递归调用都能运行;P4)合成效益法则(compound interest rule):在求解一个原创 2016-07-31 11:28:00 · 592 阅读 · 0 评论 -
数据结构排序总结
【0】README0.1) 本文总结于 数据结构与算法分析+个人的学习心得体会,源代码均为原创; 0.2) 本文列出了数据结构中基本上所有的数据结构排序算法, 整理了相关的博文(源代码); 0.3)对于数据结构排序的遗憾是, 这个排序,哥子已经搞了整整1周了,搞乏了,所以没有实现 以 Sedgewick 增量序列 { 或者是 9*4^i - 9*2^i + 1或者是 4^i - 3*2^i +原创 2015-11-07 09:03:23 · 1634 阅读 · 0 评论 -
贪婪算法+小应用(调度问题)
【0】README0.1) 本文总结于 数据结构与算法分析, 旨在 理解 “DFS应用——贪婪算法” 的idea;【1】贪婪算法1.1)已经看到的三个贪婪算法: Dijkstra算、Prim算法 和 Kruskal 算法;(Dijkstra 寻找一个顶点到其他顶点的最短路径, Prim算法是选取顶点以找出最小生成树, Kruskal算法是一次选取权值最小的边 建立最小生成树) 1.2)贪婪算法是转载 2015-11-27 15:46:24 · 3172 阅读 · 0 评论 -
近似装箱问题(两种脱机算法实现)
【0】README0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “近似装箱问题(两种脱机算法实现)” 的idea 并用源代码加以实现; 0.2) 近似装箱问题的两种联机算法 分别是: 首次适合递减算法 和 最佳适合递减算法 , 我们将依次给出源代码实现+算法描述; 0.3)联机算法+脱机算法version1)联机装箱问题: 在这种问题中, 必须将每一件物品放入一个原创 2015-11-28 13:37:14 · 2306 阅读 · 0 评论 -
散列之再散列
【0】README0.1)本文描述总结于 数据结构与算法分析, 但源代码为原创; 0.2)为什么写这篇博文? 再散列的代码实现 包括了 解决冲突的方法实现;很有代表性;(本源代码采用的解决冲突方法是 平方探测法)【1】问题+解决方法1.0)开放定址法是另外一种不用链接解决冲突的方法:如果有冲突发生, 那么就要尝试选择另外的单元,知道找出空的单元为止; 1.1)出现的问题:对于使用平方探测的开原创 2015-10-27 22:01:38 · 4953 阅读 · 0 评论 -
树的预备知识
【0】README0.1) 本文总结于 数据结构与算法分析,旨在整理出 树的相关术语和概念(哥子始终记不住树的高度和深度,记着记着就混淆了,哎,所以分享出来); 【1】树相关1.1)定义树的一种自然方式是递归的方法; 1.2)树定义:一棵树是一些节点的集合, 这个集合可以是空集;若非空, 则一棵树由称作 根(root)的节点r 以及0个或多个非空的子树组成;(树中还有树, 这本就是一个递归的定义)转载 2015-11-08 08:45:36 · 563 阅读 · 0 评论