上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 15 下一页
摘要: 从这篇文章始,将花连续2篇文章来介绍2个很重要的问题:生成排列和生成子集它们都有减一治策略的算法,但这2篇文章将不仅仅局限于减一治策略来实现,而将介绍更多的实现算法。这篇介绍排列,下篇介绍子集。--------------------------------------------------------------------------------------------------------------------------------------------------介绍3种构造排列的方法:算法1:减一治从底向上构造排列假设n-1个元素的排列已经生成好,那么将第n个元素插入到每一 阅读全文
posted @ 2011-06-17 23:07 jinmengzhe 阅读(3604) 评论(0) 推荐(2) 编辑
摘要: 这篇文章将讨论:1) 减治法的思想和策略2) 几个数据结构里面经典的使用减治策略的算法:插入排序,深度和广度优先查找,拓扑排序(都是减一治的)通过 1) 2)明白减治策略的基本思想和方法,也对经典数据结构做一番新的审视,从减治策略的角度来重新看待这些算法。而在后面,将继续花几篇文章讨论减治策略的其他问题:排列问题,子集问题,减常因子算法,减可变规模算法。-------------------------------------------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-06-17 20:32 jinmengzhe 阅读(9994) 评论(0) 推荐(4) 编辑
摘要: 参考 《算法设计与分析》 第四章 分治法 Anany Levitin著 翻译版 清华大学出版社 在上一篇文章中,介绍了分治策略的思想,主定理,以及几个用分治策略的经典案例。这一篇文章将继续探讨分治算法的其他应用,包括大整数乘法和Strassen矩阵乘法,最近点对问题和凸包问题这4个算法,一般来说常规的数据结构教程上不包括这些内容。-------------------------------------------------------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-06-12 01:10 jinmengzhe 阅读(10508) 评论(3) 推荐(2) 编辑
摘要: 参考 算法设计与分析 第四章 分治法这篇文章将讨论:1) 分治策略的思想和理论2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性。说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它们放在一起来比较,看看分治是如何实现滴。由于内容太多,我将再花一篇文章来写4个之前没有写过的分治算法:1,大整数乘法 2,矩阵乘法的分治策略 3,最近点对 4,凸包问题,请见下一篇。好了,切入正题。-------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-06-10 20:09 jinmengzhe 阅读(23789) 评论(7) 推荐(4) 编辑
摘要: 参考 : 算法设计与分析 第三章 蛮力法接下来的每章中,我们专注于一种特定的算法设计策略。蛮力法是一种最简单和直接的解决问题的办法,往往是低效的,但我们不应该忽略它的地位,1)它可以解决广阔领域的各种问题2)在规模允许时,多少可以产生一些实用的算法3)往往可以以蛮力法为准绳,来衡量高效的算法,或者找不到其他算法时,先设计蛮力算法,再做改进好了,很简单,直接切入正题。3.1 选择排序和冒泡排序虽然很简单,也写了很多次了,复习一下,提请想一想:1) 它们是稳定的排序方法吗吗?不稳定,稳定2)改进:如果对列表比较一遍后发现没有交换元素的位置,那么此时列表已经有序,可以退出了3.2 顺序查找和蛮力字符 阅读全文
posted @ 2011-06-10 00:11 jinmengzhe 阅读(5396) 评论(1) 推荐(1) 编辑
摘要: 参考 第二章 算法效率分析基础2.1 分析框架输入规模,运行时间,增长次数,最优最差平均效率2.2 基本符号和效率类型一张图,注意一般的效率类型都是什么情况2.3 非递归算法的效率分析很直观--找到基本操作建立基本操作执行次数的求和表达式2.4 递归算法的效率分析不那么直观,得看递归的深度对算法基本操作的执行次数,建立一个递推关系式以及相应的初试条件解递推关系式(跟高中数列的递推关系式差不多)举了2个例子,阶乘递归实现---基本操作的递推关系式汉诺塔---基本操作的递推关系式很重要!一定要会建立递推关系式和解递推关系式2.5 一个例子 斐波那契数列定义就不用详细说了:由这个式子:根据数学知识, 阅读全文
posted @ 2011-06-08 13:05 jinmengzhe 阅读(1903) 评论(0) 推荐(0) 编辑
摘要: 《算法设计与分析》 Anany Levitin著,潘彦译 清华大学出版社1.1 什么是算法简答介绍了算法的概念,举出了2个例子:欧几里得算法和埃拉托色尼筛。呵呵,这里说一下之前在校内上许多计算机专业的学生转载的有趣的一个段子:"早上去图书馆一女生背着一堆书进了阅览室,结果警报响了,大妈让女生看看是哪本书把警报弄响了,那女生把书倒出来,准备一本一本的测。大妈见状急了,把书分成两份,第一份过了一下,响了。又把这一份分成两份接着测,三回就找到了,大妈用鄙视的眼神看着女生,仿佛在说连O(n)和O(log2(n))都分不清"1,最大公约数-----欧几里得算法gcd(m,n) = g 阅读全文
posted @ 2011-06-05 22:09 jinmengzhe 阅读(902) 评论(0) 推荐(2) 编辑
摘要: 读书笔记 <Practical Java> 68个改善代码的重要主题-------------------------------------------------------------------------一, 一般技术实践1:参数总是以by value方式而非by reference方式传递当方法的参数是一个对象(准确的说是对象的引用)时,实际上也是传值的方式,实参先把引用赋给形参(此时形参和实参就指向了同一个对象),然后函数里面的部分是在通过对形参引用的操作来改变对象的值。实践2:对不变的date和object references使用final关键词final 只能防 阅读全文
posted @ 2011-06-05 14:45 jinmengzhe 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 差不多把数据结构里面的主要算法都写了,写一个概要吧。1,数组有序数组与无序数组的删除,插入,查找操作,时间复杂度,很简单:2,简单排序时间复杂度在O(n^2)级别的,虽然都是平方级别的,但也有快慢之分:一般来说: 插入 > 选择 > 冒泡冒泡:不变性:在排序过程中,已排好的那部分(即冒泡到的最终位置就是排序好的最终位置)保持不变,不参与后来的排序效率:要进行(N-1) + (N-2) +,,,+1 = N(N-1)/2 ,约在N^2 / 2 的比较,假设有一半情况需要交换,则需要N^2 / 4次的交换选择:不变性:已选择好的那一段不参与排序,位置选好后就不变效率:和冒泡一样,进行N 阅读全文
posted @ 2011-05-25 22:30 jinmengzhe 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。一个有向无环图的拓扑序列不是唯一的:进行拓扑排序的算法并不复杂:1)在有向图中选一个没有前驱(入度为0)的顶点且输出之2)从图中删除该顶点及它发出的弧(这样就得到了别的入度为0的顶点)。重复上述2步,直到输出全部顶点。从描述上可以看出,我们需要记录每个顶点的入度,实现如下:由于没有记录入度这一信息,先要求出一个入度数组,来表示每个顶点的入度,这个入度数组还要动态更新,当一个顶点 阅读全文
posted @ 2011-05-25 20:39 jinmengzhe 阅读(3618) 评论(1) 推荐(2) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 15 下一页