
算法
wxing2008666
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
卡尔曼滤波器及代码实现
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是转载 2013-04-16 18:41:36 · 1214 阅读 · 0 评论 -
减少文件间的编译依赖
为了更新某个类的某个功能实现,你可能需要在浩瀚 C++ 的代码中做出一个细小的修改,要提醒你的是,修改的地方不是类接口,而是实现本身,并且仅仅是私有成员。完成修改之后,你需要对程序进行重新构建,这时你肯定会认为这一过程将十分短暂,毕竟你只对一个类做出了修改。当你按下“构建”按钮,或输入 make 命令(或者其他什么等价的操作)之后,你惊呆了,然后你就会陷入困惑中,因为你发现一切代码都重新编译并重新转载 2014-03-14 10:35:04 · 1280 阅读 · 0 评论 -
二维数组和二级指针
前两天写个程序,传参数的时候想传个二维数组进去,结果悲剧了,函数写成Fun (int **p){},原来没有这么写过,以为这么写也是对的,结果错了,查了些资料,做个总结。Fun (int **p){}这里面的int **p //这里的p不是二维数组的指针,而是指向指针的指针,即二级指针。正确的二维数组的指针应该是:Int a[2][2];Int (*p)[2];//定义时无论数组维数,转载 2013-09-13 22:45:45 · 594 阅读 · 0 评论 -
两个栈实现队列,两个队列实现栈
为说明思想,假设队列、栈都很大,不会出现满的情况。两个栈实现队列//前提已知:struct Stack{ int top; //栈顶指针 int stacksize;//栈的大小 int *s; //栈底指针};void InitStack(Stack *s);void Push(Stack *s, int k);转载 2013-09-06 21:35:48 · 554 阅读 · 0 评论 -
用两个栈实现一个队列
用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue)出队(Dequeue)方法。 class Stack{…public: void Push(int x); // Push an element in stack; int P转载 2013-09-06 21:00:36 · 587 阅读 · 0 评论 -
用C语言描述数据结构
学好计算机,主要要从三个方面做起,其中,第一步就是要学好各种语言,这是第一步,对各种语言有一个大体的了解;然后就是数据结构了,它是计算机中的一门核心的课程,也是一门信息计算;在最后本人认为就是算法了,它也是这三部中最难得一步了,要学好计算机,做一名优秀的程序元,这三步是最基本的,然后再是在他们的基础上层层深入。 在过去的一年之中,我对计算机的语言有了一个大体的了解,在前一段时间,我自学了转载 2013-05-02 16:55:22 · 813 阅读 · 0 评论 -
字符串匹配的KMP算法
举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer转载 2013-05-03 12:31:57 · 484 阅读 · 0 评论 -
深入浅出选择类排序算法(简单选择排序,堆排序)
一.简单选择排序: 简单选择排序的基本思想是:一次选定数组中的一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上的数。(也即每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去。 通俗的说转载 2013-04-25 18:53:34 · 556 阅读 · 0 评论 -
深入浅出交换类排序算法(冒泡排序,快速排序)
1) 冒泡排序 冒泡排序在众多排序算法中算比较简单的一个, 基本思想是, 重复的进行整个数列的排序, 一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件).就好像气泡一样, 轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程, 所以叫冒泡排序. 其实也可以用生活中的例子理解, 就比如: 在军训排队时, 按个子高转载 2013-04-25 18:51:33 · 565 阅读 · 0 评论 -
深入浅出插入类排序算法(直接插入, 折半插入, 希尔排序)
1) 直接插入排序: 通俗的生活例子:比如大家在玩牌的时候, 每次从桌面拿到一张牌后, 然后把它放到手里牌合适的位置(这个合适位置的选择,需要将拿到的牌和手中的牌进行比较). 假如有5张牌, 牌序为 J, 10, K, Q, A (假设排列在前面的牌先拿到): 如图所示, 开始拿到”J”这张牌, 第一张牌肯定是有序的,所以序列为: 已排序的系列转载 2013-04-25 18:48:34 · 1225 阅读 · 0 评论 -
同步调用、异步调用和回调函数
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步转载 2014-05-16 14:35:52 · 1315 阅读 · 1 评论