随笔分类 -  《Java算法》

通过Java语言实现算法代码
摘要:1. 算法思想: 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。动态规划实际上是一类题目的总称,并不是指某个固定的算法。动态规划的意义就是通过采用递推(或者分而治之)的策略,通过解决大问题的子问题从而解决整体 阅读全文
posted @ 2020-01-01 17:54 加速丨世界 阅读(1239) 评论(0) 推荐(0)
摘要:1. 概要 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术 阅读全文
posted @ 2019-12-26 19:16 加速丨世界 阅读(1668) 评论(0) 推荐(1)
摘要:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法的经典案例: 跳跃游戏: 给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用 阅读全文
posted @ 2019-11-08 09:20 加速丨世界 阅读(1868) 评论(0) 推荐(2)
摘要:判重算法-整数判重 /** * 判断大于1,小于63的整数是否出现重复数字。 * * 算法逻辑:先获取8 根据移位(1 << arrInt[i]) 得到2进制数100000000 , * 后面再遇到8的时候 100000000 >> 8 位,得到的数字各位就会是1。 只要得到个位为1 就表示重复了。 阅读全文
posted @ 2019-10-12 20:47 加速丨世界 阅读(636) 评论(0) 推荐(0)
摘要:排序算法-快速排序: /** * 给定一个数组:按照从小到大排序。 * 思路: * 1. 获取第一个数放入临时变量data,将大于data的数放右边,小于data的数放在左边。 * 2. data左边和右边的数组,使用第一点的方法类推。 * * 第一点的具体实现: * 获取第一个数放入临时变量dat 阅读全文
posted @ 2019-10-09 20:21 加速丨世界 阅读(386) 评论(0) 推荐(0)