随笔分类 -  Algorithm

基础排序算法之快速排序(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) 编辑