算法
文章平均质量分 92
三目君
全文搜索引擎的使用和开发。
展开
-
排序算法考量标准思考:插入排序和冒泡排序
排序(上)——为什么插入排序比冒泡排序更受欢迎?https://blog.csdn.net/every__day/article/details/83419170https://blog.csdn.net/qq_30816517/article/details/86296446原创 2020-01-28 20:43:30 · 477 阅读 · 0 评论 -
带有通配符的字符串和另一个字符串进行匹配(转载加修改)
字符串匹配,通配符匹配,很常见的一个功能,但是却一直没花时间去做。 今天自己在想,做字符串处理,想到的方法有完全遍历,KMP,还有BM,不过由于长期做业务,算法的东西,都忘光了,想来想去还是上网找个现成的吧。不想找了了一个大神的完全遍历法,虽然和我想的思想一样,但是不得不佩服大神代码的功底,确实不一样啊。原文: http://blog.csdn.net/zzran/article/details/原创 2016-11-09 23:44:31 · 4242 阅读 · 2 评论 -
ac自动机failure跳转表构建
ac自动机:就是一个前缀trie加上一个failure跳转列表。而这个failure跳转列表就是ac自动机的关键。 trie树中的匹配到的字符串的列表,在ac自动机中叫状态转移成功列表,也叫成功跳转表。另外就是有失败跳转表。还有字符串列表(此字符串在trie中仅有一个值,在ac自动机里面会有多个值)前缀树概念不多说,仅说明一下failure跳转表的构造。在前缀树中,根节点的depth(深度)为0.原创 2016-01-26 14:04:18 · 1049 阅读 · 0 评论 -
BM算法
参考http://blog.csdn.net/joylnwang/article/details/6785743 待完……原创 2015-12-03 14:20:46 · 538 阅读 · 0 评论 -
归并排序算法-稳定的排序算法
归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。一次归并操作的工作原理如下:第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置 第三步:原创 2015-11-12 10:55:53 · 980 阅读 · 0 评论 -
堆排序
堆积(heap)是树结构的第三种型态堆积是一棵二元树 参考:《算法导论(第3版)》第6章 八大排序算法 代码:package algorithm;import java.util.Arrays;/** * Created by 刘一波 LiuYibo on 15/11/11. * E-Mail:zhanlanstar@163.com */public class HeapSortMai原创 2015-11-12 14:17:26 · 406 阅读 · 0 评论 -
快速排序 温习 QuickSort
算法介绍(参考:百度百科——快速排序算法):简要快速排序(Quicksort)是对冒泡排序的一种改进(同属交换排序)。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法介绍设要原创 2015-11-10 14:05:46 · 420 阅读 · 0 评论 -
二分查找(两行代码)
此算法依赖于排序算法:快速排序 /** * 二分查找,要求输入数列有序方可查询。常用于变动比较小的数据,且有序。时间复杂度可以表示O()=O(logN) */ static class BinaryChop { public int search(int[] sources, int search, int start, int end) {原创 2015-11-10 15:25:44 · 527 阅读 · 0 评论 -
KMP算法详解
原文:KMP算法详解 本文只为记下,并感谢作者。kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法。不过由于其难以理解,所以在很长的一段时间内一直没有搞懂。虽然网上有很多资料,但是鲜见好的博客能简单明了地将其讲清楚。在此,综合网上比较好的几个博客(参见最后),尽自己的努力争取将kmp算法思想和实现讲清楚。kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出转载 2015-11-09 17:57:45 · 433 阅读 · 0 评论 -
利用笛卡尔坐标系在控制台画出二叉树
思想二叉树的概念就不说了,怎样把二叉树画出来,像课本上那样的。 在控制如画的话,就是在一个纯文本的环境下了。 整个控制如可以看作是一个笛卡尔坐标系。 通过给树的结点设置x y 坐标 - 计算x时即按照每行有 2^x 个元素,从root开始,下一行的左右结点的位置位于父结点的左右两边。 计算y时需要使用一开始创建树的时候设置好的树的层级 level 属性。从而能够在控制台画出二叉树。树的结点原创 2015-06-28 16:56:23 · 2830 阅读 · 1 评论 -
贝塞尔曲线 (Bézier curve) 理论及绘制方法
演示地址数学中公式是很重要的,我们先看公式。公式线性公式给定点P0、P1,线性贝兹曲线只是一条两点之间的直线。这条线由下式给出:B(t)=P0+(P1-P0)t=(1-t)P0+tP1, t ∈[0, 1]且其等同于线性插值。二次方公式二次方贝兹曲线的路径由给定点P0、P1、P2的函数B(t)追踪: TrueType字型就运用了以贝兹样条组成的二次贝兹曲线。三次方公式P0、P1、P2、P3四个点原创 2015-06-26 11:56:45 · 7333 阅读 · 0 评论 -
利用 mysql 定时任务 更新最热 10 条话题 top 10 话题
有一个类似于微博的系统,里面有一个类似于话题的东西,它也会随着不同用户的发布消息而增加,所以有一个 counts 用户保存它被使用了多少次。每次保存的时候同时也会保存引用的时间,即最后一次使用的时间 lasttime 。现在需要对这些话题进行排序,显示最热门的几个。更好的方法应该是使用内存数据库来处理,由于这里只是一个小型系统,内容量并不会很大,所以直接在 mysql 中处理了。原创 2015-03-11 22:40:46 · 612 阅读 · 0 评论 -
[原创]10个人都不坐在自己座位上有多少种可能机率多大
从郑州出差回来,在高铁上,项目经理突然问我这个问题,我们讨论了很久,试了各种方法,也没有得出一个能够通用的计算结果的公式,但是却先答道了答案。想我堂堂程序员,比不过数学家,但是写个程序求结果还是非常非常容易的。下面一起来看验证结果的过程。直接贴代码。答案是 自然数E的倒数 = 1/e以下是java程序验证。原创 2015-02-07 00:38:40 · 1671 阅读 · 1 评论