随笔分类 -  算法导论

Introduction to Algorithms(2e) 潘金贵等译 北京:机械工业出版社,2006.9
堆排序
摘要:堆排序算法主要过程是保持堆的性质:max_heapify()。它的作用是:对一个大顶堆,如果拿掉堆顶元素,换成另一个元素,如果这个元素比堆顶的左右儿子小,那么就不满足大顶堆的性质,这时,max_heapify()通过逐步向下进行更新,可以达到维护大顶堆的效果,具体是将新的堆顶元素与左右儿子比较,如果比左右儿子都大说明不用更新就是一个大顶堆了;如果比左儿子小,将这个值与左儿子互换,然后对左子树递归进行同样的操作,最后形成一个大顶堆。堆排序的过程是,首先对所给元素建一个大顶堆,那么这些元素中的最大值显然就是堆顶元素了,然后,把这个元素放到序列(数组)的最后,对除了它之外的元素进行一次max_hea 阅读全文

posted @ 2013-01-12 15:17 getgoing 阅读(418) 评论(0) 推荐(0) 编辑

KMPmatch 字符串模式匹配
摘要:O(m+n)计算后缀数组时,子串进行的也是模式匹配。/* KMP match */# include <stdio.h># include <string.h># include <stdlib.h>/* P in T */int KMPmatch(char *T, char *P){ int n, m; int i, j, k, *next; n = strlen(T); m = strlen(P); next = (int *)malloc((m-1)*sizeof(int)); /* compute postfix : next[] */ nex... 阅读全文

posted @ 2012-02-20 21:39 getgoing 阅读(319) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示