算法
文章平均质量分 74
Benson_CSU
熟悉Java平台开发,对Spring生态系统、MyBatis、Activiti等框架有所涉猎。喜好研究各种新兴技术。
熟悉Android开发
展开
-
算法——个人对算法的一些理解
个人对算法的一些理解 在学校的同学们之间,算法总是被放在一个非常高的位置,有多高呢?嗯...就是非常非常高啦,高到有人只要能说出几个非常牛掰的和算法有关的名词,比如NP完全问题啦、模拟退火啦就觉得自己是大神了(其实有些人连快排都写不出来,或者写个快排还要先翻翻书)。其实我觉得算法跟数据结构、设计模式一样,都只是一种工具,用这样的工具能快速有效地解决一些实际问题,如果只知道算法,而不懂原创 2018-02-05 14:08:49 · 5369 阅读 · 0 评论 -
算法——分治
分治 分治是一种策略,是把一个较大较复杂的问题分解成多个独立的较小较简单的问题,然后再把这些小问题的结果组装成原始问题 的结果。把大问题分解成小问题,到底分解成多小的问题呢?一般来说,当问题分解成能直接解决就可以了。很明显,分治要一层层地 把大问题分解分更小的问题,所以分治经常使用递归来实现。分治就是把大问题分解成和原问题相同,但规模更小的问题,而递归恰好 有这种特性,递归就是自己调用自己原创 2018-02-05 14:57:34 · 330 阅读 · 0 评论 -
算法——快排
快排 上一篇博客说到了分治策略,分治就是分而治之的策略,把大问题分解成多个独立而且与原问题相同的小问题,直到分成可直接解决为止。分治也可用于排序算法,最经典的分治排序就是快排了,快排是很多语言框架的默认排序算法,比如说Java的Arrays中使用的就是一种被称为双轴快排的算法。 快排分为三个步骤: 分解:以元素data[p]为基准把输入原创 2018-02-05 16:54:29 · 298 阅读 · 0 评论 -
算法——动规
动规 动规就是动态规则的意思。前面讲到分治算法是把大问题分解成多个独立的小问题来求解,但很多问题分解后子问题并不是独立的,或者说如果要分解成独立的子问题,子问题太多,这样反而降低了性能。在这些不独立的子问题中,有很多数据被重复计算,其实这些重复计算的数据可以通过一个表达式来保存,就可以避免很多重复的计算。 动规用一个表来记录计算过的子问题的答案,通过填表的方式来求得最原创 2018-02-05 20:47:39 · 1581 阅读 · 0 评论