
算法
文章平均质量分 80
凌波ling
这个作者很懒,什么都没留下…
展开
-
插入排序
插入排序最基本的排序,很多书上的说法“就像我们平时打牌一样”,原理很简单 设 a 为一组牌 共 n 张,升序排列 (1)将第 i 张牌与前 i-1 张排好序的牌比较,(方向向前) (2)找到应在的位置 k (a[k] < a[i]),将 k + 1 至 i - 1 张牌向后挪一张。 (3)把第 i 张牌放入 位置 k+1这是我的代码public static void sor原创 2016-03-16 16:18:03 · 405 阅读 · 0 评论 -
选择排序
简单选择排序堆排序简单选择排序原理非常简单 n 个元素的数组,i = 1,2,3,… 从 n-i+1 个元素中选出最大(小)的元素 与第 i个元素交换原创 2016-03-17 18:02:26 · 367 阅读 · 0 评论 -
冒泡、归并和快速排序
冒泡排序归并排序快速排序冒泡排序这应该是初学者最熟悉的排序,就是 相邻两数比较,若逆序则交换。n - 1 趟之后数组有序。运行的过程上看,就像一个大泡泡逐渐浮出水面。冒泡的时间复杂度最好境况下,数组正序,比较一趟 , O(n) O(n) 最坏情况下,数组逆序,比较 ∑i=n2(i−1)=n(n−1)/2 \sum_{i=n}^2(i-1) = n(n-1)/2 次 时间复杂度原创 2016-03-18 11:43:48 · 660 阅读 · 0 评论 -
计数排序
排序算法的下界计数排序排序算法的下界在一般的排序算法中,都是通过比较,确定元素之间的关系而确定顺序, 只要是比较就只有三种情况, “<”、“=”、“>” 我们将“<”、“=”放在一起,则只剩下两种情况 “<=”、“>” 这样想我们就可以就排序过程看成是决策树这是一颗完全二叉树。原创 2016-03-18 16:23:13 · 398 阅读 · 0 评论 -
后缀表达式
对于一个算术表达式我们的一般写法是这样的 (3 + 4) × 5 - 6这中写法是中序表达式 而后序表达式则是将运算符放在操作数的后面,如 3 4 + 5 × 6 -可以看出后序表达式中没有括号, 只表达了计算的顺序, 而这个顺序恰好就是计算器中的一般计算顺序。运用后缀表达式进行计算的具体做法:建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需原创 2016-08-18 21:47:55 · 53674 阅读 · 12 评论 -
KMP之nextval推导
KMP字符串匹配算法的本质呢就是分析子串自身的特点来优化算法。第一个特点 前缀与后缀来自《算法导论》的一个实例 图a 文本 T , 与子串 P,已经匹配成功的q=5个字符,现在第六个字符匹配失败,要将子串P向前移动即 s 变大。s+1 的移动 显然失败,s+2的移动如下 图b 能成功匹配到k=3个字符,现在分析这两次匹配到的内容 图c 可以看出Pk 与 Pq的后三个字符相匹原创 2016-08-26 18:42:36 · 944 阅读 · 0 评论