算法
火星日立zy
这个作者很懒,什么都没留下…
展开
-
动态规划初探
最先听说动态规划还是在研究生的最优控制课上,课上介绍了用动态规划解决最优问题。其实动态规划(dynamic programming/DP)和分治方法类似,都是通过组合子问题来求解原问题。不过动态规划应用于问题重叠的情况,即不同的子问题具有公共的子子问题,每个子问题只求一次,而不必重新计算。就我个人的理解:动态规划就是将所求的问题分步,每一步的最优解是由当前解和之前的最优解组成。求到最后,也就求原创 2015-04-21 22:45:07 · 399 阅读 · 0 评论 -
线性排序的Java实现
线性排序算法是不用进行元素比较的算法,因此它的时间复杂度不受Ω(NlogN)的限制,它的排序时间复杂度是线性 。这里将会介绍最常见的三种线性排序算法:桶排序,计数排序,基数排序。一 桶排序桶排序(bucke sort)假设输入数据服从均匀分布,平均情况下它的时间代价为O(N),最坏为O(N^2)。桶排序将[0,1)区间换分为k个相同大小的子区间,也叫桶。然后根据输入的数据,将它们放在各个桶原创 2015-04-26 21:39:35 · 684 阅读 · 0 评论 -
比较排序算法的Java实现
在我们熟知的排序算法中,最早接触的就是冒泡排序和选择排序,后来又有了插入排序,但是这些排序算法都是二次时间的,对于大量数据的排序效率不是很高。因此后面就有了如希尔排序,归并排序,堆排序和快速排序。这里总共有7种,因为它们在排序时都会进行比较,因此也是比较排序算法,而比较排序的最快时间也要Ω(NlogN)。这时根据比较的决策树得到。N个元素,它的排序有N!种情况,将它放入到二叉树中,N!情况都在树叶...原创 2015-04-30 00:50:28 · 471 阅读 · 0 评论 -
算法题集锦
过年在家没怎么发博客,现在3月份在学校又被老板逼着做他的控制理论。时间正是金钱,能挤出一点就是一点,下面是我自己遇到的比较好的算法题,有的是leetcode上的题目,有的是一些公司的面试题目。一.查询已排序的两个数组的中位数 这也是leetcode的第二题,看似很简单(如果不考虑时间因素的话确实很容易),但是考虑效率的话,这不就是随便看看就能出来的。我一看到这道题,就想起我之前原创 2015-03-08 16:44:42 · 486 阅读 · 0 评论