随笔分类 -  算法

算法
摘要:判定好坏的四个定义 1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希... 阅读全文
posted @ 2014-12-06 19:54 我爱物联网 阅读(1115) 评论(0) 推荐(3) 编辑
摘要:复杂度 空间复杂度: O(n) (期望)跳跃表高度: O(logn)(期望)查找:O(logn)(期望)插入: O(logn)(期望)删除:O(logn)(期望)之所以在每一项后面都加一个“期望”,是因为跳跃表的复杂度分析是基于概率论的。有可能会产生最坏情况,不过这种概率极其微小。顶层链表元素的确定... 阅读全文
posted @ 2014-10-08 09:34 我爱物联网 阅读(1253) 评论(0) 推荐(0) 编辑
摘要:过程 首先需要记录每个点到原点的距离,这个距离会在每一轮遍历的过程中刷新。每一个节点到原点的最短路径是其上一个节点(前驱节点)到原点的最短路径加上前驱节点到该节点的距离。以这个原则,经过N轮计算就能得到每一个节点的最短距离。第一轮,可以计算出,2、3、4、5、6到原点1的距离分别为:[7, 9, -... 阅读全文
posted @ 2014-10-07 12:07 我爱物联网 阅读(3634) 评论(8) 推荐(1) 编辑
摘要:平衡二叉树的定义 平衡二叉查找树,又称AVL树。它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子)不超过1。也就是说AVL树每个节点的平衡因子只可能是-1、0和1(左子树高度减去右子树高度)。那么如何是二叉查... 阅读全文
posted @ 2014-08-23 10:25 我爱物联网 阅读(860) 评论(0) 推荐(0) 编辑
摘要:二叉查找树的特点 下面的图就是两棵二叉查找树,我们可以总结一下他的特点:(1) 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值(2) 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值(3) 它的左、右子树也分别为二叉查找树我们中序遍历这两棵树发现一个有序的数据序列: 【1 ... 阅读全文
posted @ 2014-08-22 13:10 我爱物联网 阅读(997) 评论(6) 推荐(0) 编辑
摘要:Suffix Trie 又称后缀Trie或后缀树。它与Trie树的最大不同在于,后缀Trie的字符串集合是由指定字符串的后缀子串构成的。比如、完整字符串"minimize"的后缀子串组成的集合S分别如下: s1=minimize s2=inimize s3=nimize s4=imize s5=mi... 阅读全文
posted @ 2014-08-22 13:09 我爱物联网 阅读(1948) 评论(0) 推荐(0) 编辑
摘要:欧几里得算法(又称辗转相除法)定理:gcd(a,b) = gcd(a,a mod b)证明:对于任何正整数a,b。如果a>b,都有a=k*b+r 即r=a-k*b => r=a mod b. 假设d为a,b的公约数,则a=a1*d,b=b1*d。 而r=a1*d-k*b1*d=(a1-k*b1)*d... 阅读全文
posted @ 2014-08-21 22:34 我爱物联网 阅读(820) 评论(0) 推荐(0) 编辑
摘要:问题:一个瓶子放一个细菌,细菌一分钟裂变一次,1变2,60分钟后瓶子就满了,问给这个瓶子里放两个细菌裂变后要多久瓶子会满?首先我们用猜的,不是30就是59,不可能是其他的答案,如果让我从30和59中选一个答案,那我肯定选59,不可能30吧,会这么弱智吗,没错答案就是59。现在我们用数学公式来证明。根... 阅读全文
posted @ 2014-08-21 13:50 我爱物联网 阅读(941) 评论(2) 推荐(0) 编辑
摘要:归并排序 归并排序是另一类不同的排序方法,所谓归并,就是把两个或者两个以上的有序表合并成一个新的有序表的过程。基本思想 将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止。example 初始值 【4... 阅读全文
posted @ 2014-08-17 16:06 我爱物联网 阅读(706) 评论(0) 推荐(0) 编辑
摘要:问题是这样的:一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马。注意: "假设每匹马都跑的很稳定" 的意思是在上一场比赛中A马比B马快,则下一场比赛中A马依然比... 阅读全文
posted @ 2014-08-16 00:59 我爱物联网 阅读(686) 评论(0) 推荐(0) 编辑
摘要:Tang和Jiang非常喜欢玩一种有趣的小游戏: 有N个石子,两人轮流从中取出1个, 3个或4个石子,当石子被取空时,游戏结束。最后一个取石子的人获胜, 第一次总是Tang取. 当然,他们俩都足够聪明,总会采取最优的策略。Input每行会有一个正整数N(N<=100000), 代表石子的个数, N=... 阅读全文
posted @ 2014-08-15 09:34 我爱物联网 阅读(916) 评论(0) 推荐(0) 编辑
摘要:随机函数发生器的设计假设你希望以各1/2的概率输出0和1.你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1 - p输出0,其中 0 =n这样能提升查找效率平均要取多少个(0,1)中的随机数才能让和超过1数学常数最令人着迷的就是,它们常常出现在一些看似与之毫不相... 阅读全文
posted @ 2014-08-01 21:42 我爱物联网 阅读(1378) 评论(0) 推荐(0) 编辑
摘要:问题描述 将多个集合合并成没有交集的集合。给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ccc ddd hhh},{ee... 阅读全文
posted @ 2014-08-01 12:22 我爱物联网 阅读(1177) 评论(0) 推荐(0) 编辑
摘要:1000瓶水中找 出有毒的那瓶,毒性一周后发作,一周内最少需要多少只老鼠这个题是对bit位的应用,1000接近1024,所以需要10个bit位,对瓶子进行编号,从0到999,这样需要10只老鼠。瓶子的编号分别为:00000,0000000000,0000100000,0001000000,00011... 阅读全文
posted @ 2014-07-31 21:05 我爱物联网 阅读(1091) 评论(0) 推荐(0) 编辑
摘要:筛选素数方法小结: 最简单的筛素数法方法就是从2开始,将所以2的倍数去掉,然后从3开始,将3的倍数去掉,依次进行下去即可。根据这样很容易写出代码,下面代码就是是筛素数法得到100以内的素数并保存到primes[]数组中。 1 const int MAXN = 100; 2 bool flag[MA... 阅读全文
posted @ 2014-07-31 15:35 我爱物联网 阅读(834) 评论(3) 推荐(2) 编辑
摘要:在介绍KMP算法之前,先介绍一下BF算法。BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。举例说明:... 阅读全文
posted @ 2014-07-30 21:25 我爱物联网 阅读(1174) 评论(0) 推荐(0) 编辑
摘要:查找单链表的倒数第k个值 刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么这个节点既是单链表的倒数第k个节点。不过这种算法时间复杂度挺高的,还有一种更简单的方法,就是设置两个指针,分别指向单链表的头节点,然后让其中一个指针,先走k步... 阅读全文
posted @ 2014-07-30 14:39 我爱物联网 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。情形1:ki = k2i 且ki >= k2i+1 (最大化堆或大顶堆)其中i=1,2,…,n/2向下取整;若将和此序列对应的一维数组(即以一维数组作此序列的存... 阅读全文
posted @ 2014-07-28 11:24 我爱物联网 阅读(900) 评论(0) 推荐(0) 编辑
摘要:选择排序法 第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。初始序列:{ 4... 阅读全文
posted @ 2014-07-27 18:42 我爱物联网 阅读(14151) 评论(1) 推荐(0) 编辑
摘要:冒泡法 第1趟:依次比较0和1、1和2、2和3...n-2和n-1索引处的元素,发现前面的大于后面的,就交换它们,这样一趟下来,最大的元素排到了最后面。第2趟:继续按照第1趟的做法再做一遍,一趟下来,第二大的元素排到了最后面。 ......这样经过n-1趟比较、交换,n个数据排序完毕。如果某一趟没有... 阅读全文
posted @ 2014-07-26 22:12 我爱物联网 阅读(1092) 评论(2) 推荐(0) 编辑

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