Algorithm
iteye_15896
这个作者很懒,什么都没留下…
展开
-
堆排序 - python 实现
首先,了解堆的定义:堆是这样一种类似于完全二叉树的数据结构,要求双亲结点的值比子节点大(或者小)。如果是大,就叫[b]大根堆[/b];如果小,就是[b]小根堆[/b]。由此,根节点一定是最大数或者最小数。这样,算法就分为下面几个步骤:1. 把序列整理成大根堆2. 把大根堆的根和序列最后一个数交换3. 把除去最后一个数后剩下的子序列再变成大根堆4. 重复2和3直到序列的第二个数为...2010-11-21 16:20:32 · 147 阅读 · 0 评论 -
快速排序 - quick sort python
快速排序是最常用的一种排序,因为它可以取得比较好的平均性能。快速排序是一种递归算法。采用了分而治之的思想。它的核心步骤是:1. 把一个序列分成左右两个部分,要求左边的数都比分界点小或相等,右边的数都比分界点的数大。2. 对步骤1分出来的左右两个部分同样执行1到2的步骤。那么如何把一个序列分成两个部分呢?设定两个指针i和j,还要设定一个初始比较值x。可以取序列最后的值为x。i左边...2010-11-21 17:09:54 · 235 阅读 · 0 评论 -
计算机编程结构及原理
雷蒙德(译者注: 论文的作者, 著名的黑客社区理论家)的话: "Lisp语言值得学习。当你学会Lisp之后, 你会拥有深刻的体验。就算你平常并不用Lisp编程, 它也会使你成为更加优秀的程序员"作为一名 Java™ 程序员,如果您花一点时间研究 Lisp 这座被人遗忘的黄金之城,就会发现许多能够改进编码方式的技术。基本上,Lisp 是一门关于列表的语言。Lisp 中的一切内容(...原创 2010-12-01 17:07:04 · 304 阅读 · 0 评论 -
关于程序的证明
程序是可以被证明是正确的吗?测试算是证明程序的正确性吗?我认为测试只是可以证明或者验证计算机程序是按照我们的意图和期望工作的。但是我们的意图和期望是不是正确的呢?是不是有矛盾的呢?这个是不是可以用数学的方法加以证明呢?...原创 2010-12-03 12:40:45 · 221 阅读 · 0 评论 -
Java String 详解 - String Literal
为了性能和内存资源上的考虑,JVM对String类型的数据做了特殊的处理。也就是大家都知道的String是immutable的或者是constant。其实很多面试或者笔试里面都会考到。有时觉得没事找事,确实,对于一般的系统,不需要考虑到底创建了几个string,只管用就是,似乎JVM会处理,至少会GC他们的。其实不然。对于大型项目,或者运行很长时间的项目,或者使用到大量字符串的项目来说,Strin...2012-04-08 14:23:00 · 2439 阅读 · 0 评论