算法导论学习
lyapple2008
只要不停止脚步就没有到不了的地方
展开
-
字符串匹配算法之KMP
关于字符串匹配算法KMP的介绍请看这里点击打开链接这里给出具体的实现代码,用了两天时间才全部实现,好菜的感觉!!!//字符串匹配的KMP算法#include #include #include using namespace std;//建立部分匹配值表void generateTable(string& str,int table[]){ int num =原创 2013-05-04 11:13:52 · 433 阅读 · 0 评论 -
一可视化的数据结构和算法学习网站
可视化的数据结构和算法学习网站原创 2013-05-06 19:24:55 · 454 阅读 · 0 评论 -
排序算法之堆排序
主要思想:1、基本概念:堆:一种数组对象,可以视作一棵完全二叉树。二叉堆有两种:最大堆和最小堆。最大堆中的最大元素放在根结点中,并且在以某一个结点为根的子树中,各结点的值都不大于该子树根结点的值。最小堆的组织方式则刚好相反。堆排序:首先按照最大堆(最小堆)构造堆,再将堆顶元素与堆尾元素交换,取出堆尾元素(即目前堆中的最大值),并在堆中将堆尾元素删除,再将目前的堆重新组织成最大堆原创 2013-05-07 20:18:52 · 337 阅读 · 0 评论 -
字符串匹配算法之Boyer-Moore
关于Boyer-Moore的具体介绍请参考这里点击打开链接 点击打开链接原创 2013-05-24 21:25:56 · 384 阅读 · 0 评论 -
《算法导论》学习之计数排序
计数排序, 基数排序, 桶排序等非比较排序算法,平均时间复杂度都是O(n). 这些排序因为其待排序元素本身就含有了定位特征,因而不需要比较就可以确定其前后位置,从而可以突破比较排序算法时间复杂度O(nlgn)的理论下限.计数排序是一种非比较排序算法,平均时间复杂度都是O(n),它要求待排序元素是位于0到k之间的正整数, 因而它是很特殊的情况,基本上没有特别的应用价值; 但是另一方面, 它又原创 2013-07-13 22:23:32 · 446 阅读 · 0 评论 -
《算法导论》学习之基数排序
基数排序是一种非比较排序,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 基数排序的时间复杂度为O(n),但是不一定优于O(nlgn),因为基数排序的时间复杂度前面有个系数K,如果K比较大的话,那其时间复杂度将超过O(nlgn) 其具体原理如下:先前数值按位进行拆分,原创 2013-07-19 19:59:06 · 587 阅读 · 0 评论 -
排序算法之快速排序
主要思想:分治法和递归操作,每一遍操作都是根据其中一个数n将数组分成两个部分,一个部分全是大于n的,另外的那部分全是小于n的。然后再对两个部分递归进行同样的操作,直到数组个数为1时结束。算法复杂度:最坏情况:O(n^2)平均情况:O(nlgn)实现代码:#include void quickSort(int a[],int left,int right)原创 2013-05-07 19:49:28 · 378 阅读 · 0 评论