Java中常用算法及示例 |
您所在的位置:网站首页 › java常用算法面试题目及答案 › Java中常用算法及示例 |
场景
1、分治算法的基本思想是将一个计算复杂的问题分成规模较小、计算简单的小问题求解, 然后综合各个小问题,得到最终答案。 2、穷举(又称枚举)算法的基本思想是从所有可能的情况中搜索正确的答案。 3、迭代法(Iterative Method) 无法使用公式一次求解,而需要使用重复结构(即循环)重复执行 一段代码来得到答案。 4、递归调用是一个方法在其方法体内调用其自身方法。 5、递推算法是一种理性思维模式的代表,其根据已有的数据和关系,逐步推导而得到结果。 6、动态规划法(Dynamic Programming Algorithm,DPA)类似于分治法,动态规划法的主要做法: 如果一个问题的答案与子问题相关,就能将大问题拆解成各个小问题, 其中与分治法最大的不同是可以让每一个子问题的答案被存储起来,以供下次求解时直接取用。 这样的做法不仅可以减少再次计算的时间,而且可以将这些解组合成大问题的解,可以解决重复计算的问题。 7、回溯法也是枚举法的一种,它的特点就是在搜索过程中寻找问题的解,当发现不满足求解条件时就回溯(返回), 尝试别的路径,避免无效搜索。 8、贪心法(Greed Method)又称贪婪算法,从某一起点开始,在每一个解决问题的步骤使用贪心原则, 即采用在当前状态下最有利或最优化的选择,不断地改进该解答,持续在每一个步骤中选择最佳的方法, 并且逐步逼近给定的目标,当达到某一个步骤不能再继续前进时,算法就停止,以尽可能快的方法求得更好的解。 注: 博客:霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主 实现1、分治算法 举个例子:要以人工的方式将散落在地上的打印纸从第一个排序整理到第100页,一种方式是逐一捡起稿纸, 按照页码顺序插入到正确的位置。这样的排序和整理的过程比较复杂且浪费时间,可以采用分治法的原理, 先将页码1到10放在一起,页码11到20放到一起,以此列推,将原来的100页分类成10个页码区间, 然后对10堆页码进行整理,最后从页码小到大的分组合并。 代码实例-求最大值 public static int getMax(int[] a,int begin,int end){ //元素小于2个,直接找出最大值 if(end -begin a[end]) return a[begin]; else return a[end]; //否则进入递归 }else { int center = (begin+end)/2; int left = getMax(a,begin,center); int right = getMax(a,center,end); return left>right?left:right; } } public static void main(String[] args) { int[] a = new int[]{2,5,8,45,65,2,44,532,33}; System.out.println("最大值:"+getMax(a,0,a.length-1)); }2、穷举实例-鸡兔同笼 static int chichen; //鸡的个数 static int habbit; //兔的个数 public static int qiongju(int head,int foot){ int re,i,j; re= 0; for(i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |