数据结构和算法
文章平均质量分 66
login_sonata
这个作者很懒,什么都没留下…
展开
-
八种排序算法(直接插入,希尔,直接选择,堆,冒泡,快排,归并,基数)
一,直接插入排序:将一个数据插入到已经排好序的有序数据中。算法适用于少量数据的排序,平均时间复杂度和最坏时间复杂度都是O(n^2),最好时间复杂度是O(n)。空间复杂度O(1)。是稳定的排序方法。Java代码://直接插入排序private static int[] insertSort(int[] arr){ if(arr == null || arr.length 2){原创 2017-05-14 16:11:28 · 897 阅读 · 0 评论 -
b树和b+树的区别
一,b树b树(balance tree)和b+树应用在数据库索引,可以认为是m叉的多路平衡查找树,但是从理论上讲,二叉树查找速度和比较次数都是最小的,为什么不用二叉树呢? 因为我们要考虑磁盘IO的影响,它相对于内存来说是很慢的。数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘页(对应索引树的节点)。所以我们要减少IO次数,对于树来说,IO次数就是树原创 2017-07-17 21:02:37 · 42932 阅读 · 9 评论 -
红黑树算法原理(从二叉搜索树讲起)
原文:红黑树深入剖析及Java实现,本文修改了原文的一些小错误,如果想看红黑树的Java实现可以到原文去看。 红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。BST二叉查找树(Binary Search Tree,简称BST)是一棵二叉树,它的左子节点的值比父节点的值要小,右节点的值要比父节点的值大。它的高度决定了它的查找效率。在理想的情况下,二叉查找树增删查改的时转载 2017-08-05 17:06:03 · 4602 阅读 · 0 评论 -
判断有向图是否存在环的2种方法(深度遍历,拓扑排序)
此题是美团2017春招实习生在线笔试题,题目是“如何判断有向图有没有回路”,这里给出两种解法以供参考。解法一:深度遍历假设图以邻接矩阵表示,一条深度遍历路线中如果有结点被第二次访问到,那么有环。我们用一个变量来标记某结点的访问状态(未访问,访问过,其后结点都被访问过),然后判断每一个结点的深度遍历路线即可。 因为采用邻接矩阵存储,一般至少需要将矩阵中元素的一半给过一下,由于矩阵元素个数为n^2,因原创 2017-09-16 11:01:22 · 90727 阅读 · 11 评论