随笔分类 -  Python

基础排序算法之快速排序(Quick Sort)
摘要:快速排序(Quick Sort)同样是使用了分治法的思想,相比于其他的排序方法,它所用到的空间更少,因为其可以实现原地排序。同时如果随机选取中心枢(pivot),它也是一个随机算法。最重要的是,快速排序(Quick sort)的算法分析的过程非常给力。本文首先描述问题,再说明快速排序(Quick Sort)的基本思路并给出伪代码,之后贴出自己的Python代码。在验证完算法的正确性之后,给出如何选择好的中心枢(pivot)的方法,即随机快速排序(Randomized Quick sort),并贴代码。最后进行算法复杂度分析。问题描述问题描述和其他排序算法一样,输入一组未排序的数组,如左边的数组 阅读全文

posted @ 2013-09-03 12:04 热爱GIS的坏蜀黍 阅读(2008) 评论(0) 推荐(4) 编辑

基础排序算法之并归排序(Merge Sort)
摘要:并归排序是学习分治法 (Merge Sort) 的好例子。而且它相对于选择,插入,冒泡排序来说,算法性能有一定提升。我首先会描述要解决的问题,并给出一个并归排序的例子。之后是算法的思路以及给出伪代码。算法的实现部分用Python完成。最后自己尝试说明白算法分析。问题描述问题描述很简单,输入一组未排序的数组,如左边的数组,通过并归排序算法的计算,输出一组正确排序的数组,如右边的数组。如果利用上面这个例子来做并归排序的话,应该首先将该数组切割成两半,对左边一半进行排序,在对右边一半进行排序,在合并排序好的左右数组。如下图所示:思路和伪代码可以从例子中看出,并归排序就是一个先分后合的过程:递归排序左 阅读全文

posted @ 2013-08-29 11:59 热爱GIS的坏蜀黍 阅读(992) 评论(1) 推荐(2) 编辑

Python中With的用法
摘要:在看Dive Into Python中有关描述文件读写那章节的时候,看到了有关with的用法,查阅下相关资料,记录下来,以备后用。官方的reference上有关with statement是这样说的,With申明把由context manager定义的方法的执行块包装起来。这样可以把try...except...finally的使用模式封装起来已被之后方便重用。官方的定义如下:1 with_stmt ::= "with" with_item ("," with_item)* ":" suite2 with_item ::= expre 阅读全文

posted @ 2013-08-28 16:08 热爱GIS的坏蜀黍 阅读(1411) 评论(0) 推荐(0) 编辑

Python中AND-OR的用法
摘要:学习Python中的lambda函数的时候,才发现原来Python中的AND和OR还可以有一些别的用法。Python中的布尔逻辑计算的结果并非返回布尔值,而是返回它们相互之间的某一个。文章的部分例子来源于Dive Into Python。ANDAND的表达式返回所遇到的第一个假值,如果表达式中无假值,则返回表达式中最后一个值。在Python中,0、‘’、[]、()、None这五个值在布尔环境中为假,例子如下:>>>() and 'foo'()>>>'python' and 'foo' and 'lamb 阅读全文

posted @ 2013-08-27 09:21 热爱GIS的坏蜀黍 阅读(715) 评论(0) 推荐(0) 编辑