Java中常用算法及示例

您所在的位置:网站首页 java常用算法面试题目及答案 Java中常用算法及示例

Java中常用算法及示例

2023-04-21 07:10| 来源: 网络整理| 查看: 265

场景

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