算法
aploughman
这个作者很懒,什么都没留下…
展开
-
KMP模式匹配算法
KMP算法小结Posted on 2011/06/14 by huangchao主要看了这里,感觉讲的十分的不错,总结一下。首先声明要搜索的串为S,设长度为n,要匹配的串为M,设长度为m.先考虑暴力的算法,暴力的算法是遍历S的每一个字符,然后从这个字符开始和M串进行匹配。时间复杂度为O(nm).怎么在此基础上进行优化?假设现在从某个位置(设为s)开始和M串进行匹配,如果匹配不成转载 2016-05-22 13:58:13 · 250 阅读 · 0 评论 -
计算机中的有符号型和无符号型
解有符号数和无符号数负数在计算机中如何表示呢? 这一点,你可能听过两种不同的回答。 一种是教科书,它会告诉你:计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的一切。再者,用“补码”表示负数,其实一种公式,公式的作用在于告诉你,想得问题的答案,应该如何计算。却并没有告诉你为什么用这个公式就可以和答案? 另一种是一些转载 2017-01-18 16:10:05 · 1501 阅读 · 0 评论 -
理解递归
用递归设计出来的程序总是简洁易读,极具美感。但是对于刚入门的学者来说,当遇到递归场景时,自己却难以正确的设计出合理的递归程序。博主曾经也是困惑不已,写的多了,也就渐渐的熟悉了递归设计。特谈一下自己的感受,有些术语是博主自己总结,有可能有不合理之处。学习递归程序设计,建议首先应该从小规模的递归开始研究,小规模就是说自己可以调试跟踪代码,且自己不会晕。这个过程完成之后,才能熟练掌握转载 2017-02-20 17:29:37 · 300 阅读 · 0 评论 -
Java中的递归原理分析
解释:程序调用自身的编程技巧叫做递归。程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来转载 2017-02-20 21:39:29 · 245 阅读 · 0 评论 -
不使用第三个变量交换两个变量的值
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。转载 2017-03-09 17:32:53 · 442 阅读 · 0 评论 -
移位运算在算法中的简单应用
一、位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 二、移位运算 1、它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2、" 3、">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统,其值相当于除以转载 2017-03-09 17:38:14 · 1276 阅读 · 0 评论 -
排序算法总结
本文转自http://www.cnblogs.com/eniac12/p/5329396.html 目录冒泡排序 鸡尾酒排序 选择排序插入排序二分插入排序 希尔排序 归并排序堆排序快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序转载 2017-04-08 23:07:09 · 266 阅读 · 0 评论 -
希尔排序详解
目录要点算法分析 希尔排序的算法性能 时间复杂度 算法稳定性 直接插入排序和希尔排序的比较完整参考代码 JAVA版本参考资料相关阅读回到顶部要点希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。该方法因DL.Shell于1959年提出而得名。希尔排序的基本思想是:把记录按步长 gap转载 2017-04-08 23:10:08 · 1265 阅读 · 0 评论