随笔分类 -  算法

摘要://门一旦打开就不关闭,是指在一个压缩段内。说明:该算法的压缩效果和数据有很大关系,一般测试时用正弦波数据,压缩效果很好,如果用随机数,基本不会压缩。==============================程序说明:E(压缩精度)的值要根据待压缩的数值来定,如果E的值太小,解压误差会很小,但压缩... 阅读全文
posted @ 2015-11-13 22:01 DKMP 阅读(3749) 评论(0) 推荐(1)
摘要:#include #include #include #include #include static const size_t TEST_DATA_COUNT = 19; // 测试数据的个数static const size_t TEST_DATA_LOWER_LIMIT = ... 阅读全文
posted @ 2013-11-28 18:58 DKMP 阅读(210) 评论(0) 推荐(0)
摘要:问题:1. 一个由N个整数元素的一维数组,求其所有子数组中元素和的最大值。2. 如果数组首尾相邻,也就是允许子数组A[i],...,A[n-1],A[0],...,A[j]存在,求其所有子数组总元素和的最大值。1. 解法:我们使用动态规划的思想可以在O(n)的时间内计算出子数组之和最大值。动态规划问... 阅读全文
posted @ 2013-11-22 16:10 DKMP 阅读(280) 评论(0) 推荐(0)
摘要:一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):关于这个解法最形象的比喻就是在操场当中跑步,速度快的会把速度慢的扣圈可以证明,p2追赶上p1的时候,p1一定还没有走完一遍环路,p2也不会跨越p1多圈才追上我们可以从p2和p1的位置差距来证... 阅读全文
posted @ 2013-11-22 10:07 DKMP 阅读(275) 评论(0) 推荐(0)
摘要:动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就 阅读全文
posted @ 2013-09-04 20:08 DKMP 阅读(320) 评论(0) 推荐(0)
摘要:快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序n個項目要Ο(nlogn)次比較。在最壞狀況下則需要Ο(n2)次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他Ο(nlogn) 演算法更快,因為它的內部循环(inner loop)可以在大部分的架構上很有效率地被實作出來。 ... 阅读全文
posted @ 2013-09-04 16:48 DKMP 阅读(173) 评论(0) 推荐(0)
摘要:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。时间复杂度为o(n^2)。 冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开... 阅读全文
posted @ 2013-09-04 14:57 DKMP 阅读(190) 评论(0) 推荐(0)
摘要:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 例如: 初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第... 阅读全文
posted @ 2013-09-04 14:49 DKMP 阅读(208) 评论(0) 推荐(0)
摘要:consistent hashing算法早在1997年就在论文Consistent hashing and random trees中被提出,目前在cache系统中应用越来越广泛;1基本场景比如你有N个cache服务器(后面简称cache),那么如何将一个对象object映射到N个cache上呢,你... 阅读全文
posted @ 2013-09-03 19:48 DKMP 阅读(206) 评论(0) 推荐(0)
摘要:题目: 五笔的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把五笔的编码按字典序排序,形成一个数组如下:a, aa, aaa, aaaa, aaab, aaac, … …, b, ba, baa, baaa, baab, baac … …, yyyw, yyyx, yyyy。其... 阅读全文
posted @ 2013-09-03 10:02 DKMP 阅读(1503) 评论(0) 推荐(0)
摘要:题目:给定一个函数rand()能产生1到n之间的等概率随机数,问如何产生1到m之间等概率的随机数? 先把问题特殊化,例如原题变为给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。... 阅读全文
posted @ 2013-09-03 09:48 DKMP 阅读(2714) 评论(0) 推荐(0)
摘要:unsigned long sqrt(unsigned long num){ unsigned int x,tmp; //x为所求结果 unsigned int i=0xffffffff; //控制循环的次数 x=num/2; while(i--) ... 阅读全文
posted @ 2013-08-30 15:07 DKMP 阅读(228) 评论(0) 推荐(0)
摘要:问题:写一个程序,对于一个正整数,输出它所有可能的连续自然数(两个以上)之和的算式 分析: 设输入的数为N;拆分为k个数;拆分后连续数的第一个数为m。则有 N = m + (m+1) + (m+2) + …… + (m+k-1) = k*m + 1+2+3+……+(k-1) = ... 阅读全文
posted @ 2013-08-29 11:44 DKMP 阅读(808) 评论(0) 推荐(0)
摘要:问题叙述: 将一个n元一维向量向左旋转i个位置。例如,当n=8且i=3时,"abcdefgh"旋转为"defghabc",要求时间为O(n),额外存储占用为O(1)。(《编程珠玑》第二章问题B)分析: 严格来说这并不是一个字符串,因为'\0'是不会移动的。为了叙述方便,可以把它认为是字符串,只是... 阅读全文
posted @ 2013-08-29 10:01 DKMP 阅读(677) 评论(0) 推荐(0)
摘要:单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。 一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中... 阅读全文
posted @ 2013-08-28 19:11 DKMP 阅读(478) 评论(0) 推荐(0)
摘要:堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key... 阅读全文
posted @ 2013-08-26 17:00 DKMP 阅读(225) 评论(0) 推荐(0)
摘要:简单的单链表逆置操作,图中黑色节点只能找到有颜色的节点、或通过箭头找到节点。#include#include typedef struct _Node{ struct _Node* next; int data;}Node;void Print(Node* cur){ for(;c... 阅读全文
posted @ 2013-08-26 11:44 DKMP 阅读(920) 评论(0) 推荐(0)
摘要:首先来了解下一些概念性的东西。二分图: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图... 阅读全文
posted @ 2013-08-21 19:17 DKMP 阅读(6147) 评论(0) 推荐(1)