算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
LBP
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由T. Ojala, M.Pietikäinen, 和 D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征;1、LBP特征的描述 原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的转载 2015-12-31 10:16:22 · 333 阅读 · 0 评论 -
PageRank算法以及Map-Reduce实现
一、什么是pagerankPageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO。PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序。它的思想是模拟一个悠闲的上网者,上网者首先随机选择一个网页打开,然后在这个网页上呆了几分钟后,跳转到该网转载 2016-01-12 14:10:14 · 432 阅读 · 0 评论 -
常用算法总结
最常用的算法1.图搜索算法(BFS,DFS),深度优先搜索尤其重要,因为它能给出很多图的结构信息。2.排序算法(比较排序和桶排序思想)3.通用的动态规划算法4.匹配算法和网络流算法5.正则表达式和字符串匹配算法最常用的数据结构1.图,尤其是树结构特别重要。2.Maps结构3.Heap结构4.Stacks/Queues结构5.Trie树其他一些相对比较常用的数据算法还有:贪心算法、Prim’s / K转载 2016-01-11 22:46:17 · 270 阅读 · 0 评论 -
排序算法总结
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。各种排序的稳定性,时间复杂度、空间复杂度、稳定性总结如下图: 关于时间复杂度:(1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选原创 2016-01-11 22:27:57 · 282 阅读 · 0 评论 -
桶排序
算法思想:将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,则不受到 O(n log n) 下限的影响。简单来说,就是把数据分组,放在一个个的桶中,然后对每个桶里面的在进行排序。例如要对大小为[1..1000]原创 2016-01-11 22:13:30 · 325 阅读 · 0 评论 -
堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序的平均时间复杂度为Ο(nlogn) 。算法步骤:1)创建一个堆H[0..n-1]2)把堆首(最大值)和堆尾互换3)把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置4) 重复步骤2原创 2016-01-11 21:51:40 · 245 阅读 · 0 评论 -
快速排序
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串原创 2016-01-11 21:06:40 · 228 阅读 · 0 评论 -
归并排序
归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。用分治策略解决问题分为三步:分解、解决、合并。也即:将原问题划分成n个规模较小而结构与原问题相似的子问题; 递归地解决这些子问题,然后再合并其结果,得到原问题的解。此处n=2。算法步骤:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后原创 2016-01-11 19:58:49 · 273 阅读 · 0 评论 -
Java中的设计模式(1)
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。一、转载 2016-01-11 17:51:52 · 228 阅读 · 0 评论 -
二分查找
二分查找又称为折半查找。 优点:比较次数少,查找速度快,平均性能好; 缺点:要求待查表为有序表,且插入和删除困难。因此二分查找适用于不经常变动且查找频繁的有序列表。public class binarysearch{ public static void main (String[] args) { int[] nums={20,34,30,45,54,60};原创 2016-01-10 15:50:45 · 246 阅读 · 0 评论 -
选择排序
算法思想: 每一次从待排序的数据元素中选出最小(或者最大)的一个元素,顺序放在已经排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。public class xuanzepaixu{ public static void main(String [] args) { int[] num ={2,5,18,3,23,89,8};原创 2016-01-10 13:25:54 · 218 阅读 · 0 评论 -
冒泡排序
冒泡排序算法思想如下:比较相邻的元素,如果第一个比第二个大,就交换他们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素应该会是最大的数; 针对所有的元素重复以上步骤,除了最后一个。 持续每次对越来越少的元素重复上面步骤,直到没有任何一对数字需要比较。 相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定的排序算法。public claa maopaop原创 2016-01-10 11:41:58 · 233 阅读 · 0 评论 -
插入排序、希尔排序
本篇主要探讨插入排序和希尔排序,之所将二者放在一起,是因为希尔排序是建立在插入排序的基础之上的。一、插入排序: 将一个数据插入到已经排好序的序列中,从而得到一个新的有序序列。根据查找插入位置的实现思路不同,它又可以分为:直接插入排序、折半插入排序、2-路插入排序。。。这里,我们主要探讨下直接插入排序和折半插入排序。 1、直接插入排序 直接插入排序是最基本的插入排序方法,也是一原创 2016-01-06 22:50:51 · 287 阅读 · 0 评论 -
冒泡排序、选择排序
一、冒泡排序 算法思想: 从左到右扫描数据,找出最大的元素,将其放到数组右边,循环比较相邻的两个数,如果左边的数比右边的大,则交换两个数;template <typename Type> void bubbleSort(Type *begin, Type *end) { if ((begin == end) || (begin == NULL) || (end ==转载 2016-01-07 19:39:27 · 259 阅读 · 0 评论 -
快速排序
快速排序是最流行的,也是速度最快的排序算法(C++ STL 的sort函数就是实现的快速排序);快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据序转载 2016-01-08 10:57:17 · 316 阅读 · 0 评论 -
顺序查找、二分查找
一、顺序查找 适用范围:没有进行排序的数据序列 缺点:速度非常慢, 效率为O(N)template <typename Type> Type *sequenceSearch(Type *begin, Type *end, const Type &searchValue) throw(std::range_error) { if ((begin == end) || (be转载 2016-01-07 23:11:37 · 445 阅读 · 0 评论 -
HOG
HOG特征1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2转载 2015-12-31 15:32:31 · 824 阅读 · 0 评论 -
A*搜索算法
启发式搜索算法: 要理解 A*搜寻算法,还得从启发式搜索算法开始谈起。 所谓启发式搜索,就在于当前搜索结点往下选择下一步结点时,可以通过一个启发函数 来进行选择,选择代价最少的结点作为下一步搜索结点而跳转其上(遇到有一个以上代价最 少的结点,不妨选距离当前搜索点最近一次展开的搜索点进行下一步搜索)。 DFS 和 BFS 在展开子结点时均属于盲目型搜索,也就是说,它不会选择哪个结点在下 一转载 2016-01-30 21:54:27 · 634 阅读 · 0 评论