算法
文章平均质量分 74
逐鹿之城
闷头做技术是学而不思则惘,整天瞎扯淡是思而不学则怠
展开
-
图之有向无环图的应用--拓扑排序算法的实现
前面博文对拓扑排序进行了引入 http://blog.csdn.net/derkampf/article/details/57414185,这一篇进行拓扑排序算法的实现。 一.概念 由偏序得到全序的操作称为拓扑排序。在拓扑排序之后,有向图中的每一个顶点都会按照一定的次序进行输出。 二.如何进行拓扑排序 步骤: 1.在有向图中选择一个无前驱顶点(无入度)且输出 2.删除该顶点以及所有以该原创 2017-02-26 22:04:23 · 1046 阅读 · 0 评论 -
算法--递归与分治策略
一.递归的概念 一个直接或间接调用自身的算法叫做递归算法。即自己调用自己。 递归的关键点在结束条件。 二.通过例子看递归 1.求数的阶乘 数学公式:0!,1!-->1这可以作为递归结束的判断条件//递归形式实现数的阶乘int Factorial(int n){ if(n == 0 || n == 1) //0和1作为递归结束的条件 return 1;原创 2017-02-06 16:35:36 · 870 阅读 · 1 评论 -
判断一个数是否为素数的方法汇总
time命令输出的信息 [1] real : 表示程序整个的运行耗时。可以理解为foo运行开始时刻你看了一下手表,程序运行结束时,你又看了一下手表,两次时间的差值就是本次real 代表的值 [2]user :这个时间代表的是foo运行在用户态的cpu时间,什么意思? 首先,我来讲一下用户态和核心态: 核心态(Kernel Mode): 在内核态,代码拥有完全的,不受任何限原创 2017-03-17 22:16:00 · 30552 阅读 · 5 评论 -
字符串匹配的KMP算法
转载自阮大神http://kb.cnblogs.com/page/176818/ 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家转载 2017-04-11 12:15:02 · 424 阅读 · 0 评论 -
时间复杂度的解析
时间复杂度1.时间复杂度的定义一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。 定义:如果一个问题的规模是n,解这一问题的某一原创 2017-04-14 17:45:50 · 3126 阅读 · 0 评论 -
排序算法的分类及如何选择
一.排序的分类1、 根据待排序的数据大小不同,使得排序过程中所涉及的存储器不同,可分为: 内部排序 外部排序 2、 排序关键字可能出现重复,根据重复关键字的排序情况可分为: 稳定排序 不稳定排序 3、 对于内部排序,依据不同的排序原则,可分为: 插入排序 交换(快速)排序 选择排序 归并排序 计数排序 4、 针对内部排序所需的工作量划分,可分为: 简单排序 O(n^2原创 2017-04-15 11:37:38 · 7586 阅读 · 0 评论 -
缓存淘汰算法之LRU
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表满的时候,将链表尾部的数据丢弃。1.3. 分析转载 2017-06-25 21:10:40 · 289 阅读 · 0 评论