
算法
文章平均质量分 68
summer_liuwei
这个作者很懒,什么都没留下…
展开
-
堆排序实现
堆排序的基本思想:将array[n]的数组看成一棵完全二叉树。父节点均大于其左右子节点的,为大根堆;父节点均小于其左右子节点的,为小根堆。1) 初建堆--从length/2节点开始,自底向上调整,使array[n]成为一个大顶堆;2) 交换堆顶元素(最大值)和最后一个元素,将移走最大元素后的剩余元素,从堆顶开始再调整为堆;3) 重复步骤2)n-1次,则实现array[n]升序排列。堆调整过程:1) 从待调整元素i开始开始调整,自顶向下地作如下调整:2) 将待调整元素与其左右孩子节点比较,三者中最大者作为新的原创 2011-05-22 18:11:00 · 586 阅读 · 0 评论 -
模式匹配的KMP算法详解
<br />转http://www.programfan.com/blog/article.asp?id=15762<br /> <br />这种由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的改进的模式匹配算法简称为KMP算法。大概学过信息学的都知道,是个比较难理解的算法,今天特把它搞个彻彻底底明明白白。<br />注意到这是一个改进的算法,所以有必要把原来的模式匹配算法拿出来,其实理解的关键就在这里,一般的匹配算法:<br />int Index(String S,String转载 2011-04-06 22:22:00 · 565 阅读 · 0 评论 -
求n的阶乘,使用数组存储结果
利用基本乘法运算思想求n的阶乘,使用数组存放所得结果。利用数组存放结果,可避免大数溢出的问题。#include int main() { long int n; long int a[250000]; //确保保存最终运算结果的数组足够大 long int digit = 1; //结果的位数 long int temp; //阶乘的任一元素与临时结果的某位的乘积结果 long int i,j,carry;原创 2011-05-05 22:30:00 · 9193 阅读 · 1 评论