算法
阳君
路漫漫其修远兮,吾将上下而求索!
展开
-
备份与恢复
当你正在做一份很重要的数据汇总时,却突然断电或者电脑出现异常,使得原先辛辛苦苦做的东西一下子灰飞烟灭了,你会作何感受呢?是后悔还是气恼?后悔没有备份数据,想恢复数据又不行。当然,在这之前,我们就要做好双重的准备,以防万一,过一段时间就为数据做一个备份是不可或缺的! 在我们的生活中充满了这样的工具,往大了说有各大云盘,如:百度云盘、360云盘和苹果的iCloud等;往小了说在各种应原创 2015-09-24 21:32:20 · 480 阅读 · 0 评论 -
快速排序
对于包含n个数的输入数组来说,快速排序是一种最坏情况的时间复杂度为的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,它的期望复杂度是nlgn。原创 2015-09-24 21:46:50 · 1808 阅读 · 0 评论 -
数组(交OR并)
在工作或者面试的时候,往往会遇到对一些数组求交集或者并集的情况,本日志描述了最快求交集或者并集,并且去掉了重复数据的方法。针对那些影响效率的算法,这里不在描述。数组求教和求并都使用Set这个集合。它能够更快查询是否存在这个数据。原创 2015-11-25 21:03:31 · 2234 阅读 · 1 评论 -
字符串匹配
在编辑文本程序过程中,我们经常需要在文本中找到某个模式的所有出现位置。典型情况是,一段正在被编辑的文本构成一个文件,而所要搜索的模式是用户正在输入的特定的关键字。有效的解决这个问题的算法叫做字符串匹配算法,该算法能够极大地提高编辑文本程序时的响应效率。1 暴力字符串匹配算法暴力字符串匹配算法(也称朴素字符串匹配算法)是通过一个循环找到所有有效偏移。如果用暴力匹配的思路,并假设现在文本串S匹配到 i原创 2015-11-25 20:07:06 · 853 阅读 · 0 评论 -
B树
B树是为磁盘和其他直接存取的辅助存储设备而设计的一种平衡搜索树。B树类似于红黑树,但它们在降低I/O操作数方面要更好一些。许多数据库系统使用B树或者B树的变种来存储信息。B树与红黑树的不同之处在于B树的结点可以有很多孩子,从数个到树千个。也就是说,一个B树的“分支因子”可以相当大,尽管它通常依赖于所使用的磁盘单元的特性。B树类似于红黑树,就是每棵含有n个结点的B数高度为O(lgn)。然而,一棵B树的原创 2015-11-24 20:58:47 · 3854 阅读 · 0 评论 -
基本数据结构
常用的数据结构有:栈、队列、链表和有根树。本篇博文向大家介绍了栈、队列和链表,关于有根树会在后面关于树的算法中介绍。栈和队列都是动态集合,且在其上进行delete操作所移除的元素都是预先设定的。在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出策略。类似地,在队列中,被删除的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出策略。原创 2015-11-18 11:12:35 · 641 阅读 · 0 评论 -
红黑树
在前面介绍了一棵高度为h的二叉搜索树,其相关操作的时间复杂度均为O(h)。因此搜索树的高度较低时,这些集合操作会执行得较快。然而,如果树的高度较高时,这些集合操作可能并不比链表上执行的快。红黑树(red black tree)是许多“平衡”搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(lgn)。原创 2015-11-23 14:03:49 · 656 阅读 · 0 评论 -
堆排序
堆排序(HeapSort),与归并排序一样,但不同于插入排序的是,堆排序的时间复杂度是O(nlgn),空间复杂度是O(n)。而与插入排序相同,但不同于归并排序的是,堆排序同样具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据。原创 2015-09-25 15:52:34 · 820 阅读 · 0 评论 -
二叉搜索树
搜索树数据结构支持许多动态集合操作,包括search、minimum、maximum、predecessor、successor、insert和delete等。因此,我们使用一棵搜索树即可以作为一个字典又可以作为一个优先队列。二叉搜索树上的基本操作所花费的时间与这棵树德高度成正比。对于有n个结点的一棵完全二叉树来说,这些操作的最坏运行时间为o(lgn)。然而,如果这棵树是一条n个结点组成的线性链,那原创 2015-11-20 15:42:30 · 507 阅读 · 0 评论