
算法
文章平均质量分 94
墨染百城
目前专注于数据分析、大数据计算方面的学习
展开
-
【LeetCode】常用算法之快速排序
今天刷题的时候要用到快排,然后发现居然写不出来了,好沮丧啊。看来基础知识还需要好好加强,先把快排补起来。简介快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法步骤设要排序的数组原创 2017-03-23 11:51:18 · 3101 阅读 · 0 评论 -
【LeetCode】常用算法之回溯法
参考资料http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.html概念回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择原创 2017-03-20 11:22:58 · 452 阅读 · 0 评论 -
【LeetCode】常用算法之Quick Select
之前刚刚实现了快速排序算法。现在还有一个要求就是找到一个序列中第K大的数。我们当然可以用先排序再取值的方法来做,这样的时间复杂度为O(NlogN)。或者使用heap_sort,或者优先队列,则复杂度是O(NlogK)。那么有没有一种更加高效的方式呢?答案是肯定的。可以使用快速排序的一个变种quick_select,则平均复杂度为O(N),最坏复杂度为O(N^2)。算法思想通过一趟快排过后,序列将被分原创 2017-03-23 12:33:17 · 13396 阅读 · 1 评论 -
【LeetCode】常用算法之动态规划
一直很想学习动态规划算法,虽然也在课上听老师讲过背包问题啊,旅行商问题啊,但是都是懵懵懂懂的匆匆而过,一直也没有学会。这次刷LeetCode也给了我一个机会来弥补之前的遗憾。参考资料http://blog.youkuaiyun.com/baidu_28312631/article/details/47418773http://www.hawstein.com/posts/dp-novice-to-advance原创 2017-03-25 11:04:36 · 639 阅读 · 0 评论 -
【算法】算法的时间复杂度计算
计量单位为了便于比较同一个问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本操作的原操作,以该基本操作的重复执行的次数作为算法的时间量度。时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。时间复杂度在刚才提到的时间频度中,n称为问题的规模,当n不断变化时原创 2017-06-14 17:28:05 · 2432 阅读 · 0 评论