随笔分类 -  算法与数据结构

1 2 3 4 5 ··· 7 下一页

kalman滤波
摘要:kalman滤波原理(通俗易懂) 1. 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯 阅读全文

posted @ 2018-06-25 13:56 AlanTu 阅读(5193) 评论(0) 推荐(1) 编辑

算法课笔记系列(七)—— 平摊分析Amortized Analysis
摘要:本周的内容是Amortized Analysis,是对算法复杂度的另一种分析。它的基本概念是,给定一连串操作,大部分的操作是非常廉价的,有极少的操作可能非常昂贵,因此一个标准的最坏分析可能过于消极了。因此,其基本理念在于,当昂贵的操作特别少的时候,他们的成本可能会均摊到所有的操作上。如果人工均摊的花 阅读全文

posted @ 2018-06-21 14:02 AlanTu 阅读(11340) 评论(0) 推荐(2) 编辑

《二叉树》学习心得
摘要:树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节点称为根节点;(03) 每一个非根节点有 阅读全文

posted @ 2018-05-03 16:07 AlanTu 阅读(5775) 评论(0) 推荐(0) 编辑

《红黑树》学习心得
摘要:R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL 阅读全文

posted @ 2018-05-03 15:48 AlanTu 阅读(810) 评论(0) 推荐(0) 编辑

打印质数的各种算法
摘要:打印质数的算法应该是学习计算机编程的一个经典的问题,在这里想给大家展示一些方法,相信这些方法会对你的编程有一定的启发作用。请你注意几点, 实际应用和教学应用有很大的差别。最后的那个使用编译时而不是运行时的方法大家可以重点看看。 教科书的示例 首先,先给一个教科书的示例。下面这个示例应该是教科书(至少 阅读全文

posted @ 2018-03-04 08:28 AlanTu 阅读(322) 评论(0) 推荐(0) 编辑

一些有意思的算法代码
摘要:Keith Schwarz是一个斯坦福大学计算机科学系的讲师。他对编程充满了热情。他的主页上他自己正在实现各种各样的有意思的算法和数据结构,http://www.keithschwarz.com/interesting/, 目前这个网页上有88个(见下面的列表),但这位大哥要干135个,你可以看看他 阅读全文

posted @ 2018-03-03 23:19 AlanTu 阅读(768) 评论(0) 推荐(0) 编辑

无锁队列的实现
摘要:关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。 关于CAS等原子操作 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compar 阅读全文

posted @ 2018-03-03 23:16 AlanTu 阅读(1622) 评论(0) 推荐(0) 编辑

Linus:利用二级指针删除单向链表
摘要:Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding。 下面是Linus的教学原文及翻译—— “At the opposite end of the 阅读全文

posted @ 2018-03-03 23:14 AlanTu 阅读(189) 评论(0) 推荐(0) 编辑

二叉树迭代器算法
摘要:二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。 假设二叉树结点定义如下: 123456// C++struct Node { int value; Node *left; Node *right;} 中序递归遍历算法: 阅读全文

posted @ 2018-03-03 23:10 AlanTu 阅读(329) 评论(0) 推荐(0) 编辑

Alan Cox:单向链表中prev指针的妙用
摘要:之前发过一篇二级指针操作单向链表的例子,显示了C语言指针的灵活性,这次再探讨一个指针操作链表的例子,而且是一种完全不同的用法。 这个例子是linux-1.2.13网络协议栈里的,关于链表遍历&数据拷贝的一处实现。源文件是/net/inet/dev.c,你可以从kernel.org官网上下载。 从最早 阅读全文

posted @ 2018-03-03 23:10 AlanTu 阅读(575) 评论(0) 推荐(0) 编辑

哈希表心得
摘要:最近我在做一个项目,其中要用到一个数据结构——Hash Table(哈希表),以前只有理论知识,现在实却发现很不简单,所以写下来和大家共分享。 我们知道,哈希表是一个固定大小的数组,数组的每个元素是一个链表(单向或双向)的头指针。如果Key一样,则在一起,如果Key不一样,则不在一起。哈希表的查询是 阅读全文

posted @ 2018-03-03 22:21 AlanTu 阅读(499) 评论(0) 推荐(0) 编辑

【转】谈“P=NP?”
摘要:“P=NP?” 通常被认为是计算机科学最重要的问题。有一个叫Clay Math的研究所,甚至悬赏 100 万美元给解决它的人。可是我今天要告诉你的是,这个问题其实是不存在的,它根本不需要解决。 我并不是第一个这样认为的人。在很早的时候就有个数学家毫不客气的指出,P=NP? 是个愚蠢的问题,并且为了嘲 阅读全文

posted @ 2018-03-03 09:16 AlanTu 阅读(7590) 评论(0) 推荐(0) 编辑

算法知识目录整理
摘要:算法知识目录整理 1. 算法部分 二分搜索 Binary Search 分治 Divide Conquer 宽度优先搜索 Breadth First Search 深度优先搜索 Depth First Search 回溯法 Backtracking 双指针 Two Pointers 动态规划 Dyn 阅读全文

posted @ 2018-03-02 23:14 AlanTu 阅读(230) 评论(0) 推荐(0) 编辑

平衡二叉树AVL - 插入节点后旋转方法分析
摘要:平衡二叉树 AVL( 发明者为Adel'son-Vel'skii 和 Landis)是一种二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。 首先我们知道,当插入一个节点,从此插入点到树根节点路径上的所有节点的平衡都可能被打破,如何解决这个问题呢? 这里不讲大多数书上提的什么平衡因子,什 阅读全文

posted @ 2018-02-26 10:40 AlanTu 阅读(668) 评论(0) 推荐(0) 编辑

十种排序算法总结
摘要:首先声明一下,本文只对十种排序算法做简单总结,并参照一些资料给出自己的代码实现,并没有对某种算法理论讲解,更详细的 了解可以参考以下资料(本人参考): 1、《data structure and algorithm analysis in c 》 2、《大话数据结构》 3、http://blog.c 阅读全文

posted @ 2018-02-26 10:38 AlanTu 阅读(437) 评论(0) 推荐(0) 编辑

散列表(四)冲突处理的方法之开地址法: 二次探测再散列的实现
摘要:前面的文章分析了开地址法的其中一种:线性探测再散列,这篇文章来讲开地址法的第二种:二次探测再散列 (二)、二次探测再散列 为改善“堆积”问题,减少为完成搜索所需的平均探查次数,可使用二次探测法。 通过某一个散列函数对表项的关键码 x 进行计算,得到桶号,它是一个非负整数。 若设表的长度为TableS 阅读全文

posted @ 2018-02-26 10:35 AlanTu 阅读(15852) 评论(0) 推荐(0) 编辑

散列表(三)冲突处理的方法之开地址法: 线性探测再散列的实现
摘要:二、开地址法 基本思想:当关键码key的哈希地址H0 = hash(key)出现冲突时,以H0为基础,产生另一个哈希地址H1 ,如果H1仍然冲突,再以H0 为基础,产生另一个哈希地址H2 ,…,直到找出一个不冲突的哈希地址Hi ,将相应元素存入其中。这种方法有一个通用的再散列函 数形式: 其中H0 阅读全文

posted @ 2018-02-26 10:33 AlanTu 阅读(16170) 评论(0) 推荐(0) 编辑

散列表(二)冲突处理的方法之链地址法的实现: 哈希查找
摘要:首先需要澄清的一点是,这里讲的是hash table/hash map ,即数据项所存储的表要用数组来实现。 一、链地址法 这种基本思想:将所有哈希地址为i 的元素构成一个称为同义词链的链表,并将链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在 同义词链中进行。 该散列方法首先对关键 阅读全文

posted @ 2018-02-26 10:31 AlanTu 阅读(914) 评论(0) 推荐(0) 编辑

散列表(一)散列表概念、散列函数构造方法、常见字符串哈希函数: 测试冲突
摘要:一、散列表基本概念 1、散列表(hash table) ,也叫哈希表,是根据关键码而直接进行访问的数据结构。也就是说,它通过把关键码映射到表中一个位置 来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 2、若结构中存在关键码为x的记录,则必定在hash(x)的存储位 阅读全文

posted @ 2018-02-26 10:30 AlanTu 阅读(1341) 评论(0) 推荐(0) 编辑

二叉排序树 - 删除节点策略及其图形化(二叉树查找)
摘要:二叉排序树(BST,Binary Sort Tree)具有这样的性质:对于二叉树中的任意节点,如果它有左子树或右子树,则该节点的数据成员大于左子树所有节点的数据成员,且小于右子树所有节点的数据成员。排序二叉树的中序遍历结果是从小到大排列的。 二叉排序树的查找和插入比较好理解,主要来看一下删除时的情况 阅读全文

posted @ 2018-02-26 10:28 AlanTu 阅读(15693) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页

导航