面试java算法题思路和实例

在java面试中,绕不开的就是算法和数据结构了。问算法可以大概知道你遇到棘手问题时编程的效率。下面我们就来分析一下算法的常规思路和例子:

1.递归法 汉诺塔

2.穷举法     暴力密码破解法 2.穷举法 暴力密码破解法
3.贪心算法 加勒比海盗偷宝藏 3.贪心算法 加勒比海盗偷宝藏
4.分治法       乐毅连下齐72城二分搜索 4.分治法 乐毅连下齐72城二分搜索
5.动态规划法 导弹拦截 5.动态规划法 导弹拦截
6.迭代法         超能生的兔子 6.迭代法 超能生的兔子
7.回溯法          八皇后 7.回溯法 八皇后

这几个是在面试中我们要拿高新必须了解的基本功和例子,在面试中,最容易被问到的就是关于排序问题,如下:

1.插入排序 1.插入排序
2.选择排序 2.选择排序
3.交换排序 3.交换排序
4.归并排序 4.归并排序
5.基数排序 5.基数排序

例子:我们拿插入排序中的直接插入排序作为例子,源码如下:

public class InsertSort { /** * 直接插入排序 * @param args */ public static void main(String[] args) { int[] a={49,38,65,97,76,13,27,49,78,34,12,64,1}; System.out.println("排序之前:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } //直接插入排序 for (int i = 1; i < a.length; i++) { //待插入元素 int temp = a[i]; int j; for (j = i-1; j>=0; j--) { //将大于temp的往后移动一位 if(a[j]>temp){ a[j+1] = a[j]; }else{ break; } } a[j+1] = temp;//插入进来 } System.out.println(); System.out.println("排序之后:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } }

}

关于排序掌握那五个其实在一些牛逼公司的面试中就已经够了。

接下来就是递归了,很多程序猿很头疼这类问题,但是递归思想能够简化很冗长的代码,是每个程序猿必须掌握的,常见问题和实例如下:

1.二分法搜索

2.欧几里德算法 2.欧几里德算法
3.汉诺塔 3.汉诺塔
4.阶乘求解算法 4.阶乘求解算法

在此我们举一个阿里这些公司会问到的汉诺塔实例:

public class Haonoi {//汉诺塔 int i = 1; public void haoNoi(int n,char from,char dependOn,char to){ if(n == 1){ System.out.println(); move(1,from,to); }else{ haoNoi(n-1,from,to,dependOn); move(n,from,to); haoNoi(n-1,dependOn,from,to); } } public void move(int n,char from,char to){ System.out.println("第"+i+++"步,将盘子"+from+"------>"+to); } public static void main(String[] args){ Haonoi haonoi = new Haonoi(); haonoi.haoNoi(72, A,B, C); } }

这次介绍了关于算法的常规解题思路和算法排序,递归等简单例子。想认真学习算法的可以观看笔者推荐的视频生动有趣,像相声演员,不枯燥,不抽象,简单易懂,笔者非常推荐。具体课程看宝贝图片,非常全面的java算法和数据结构教程,有基础的,也有教科书里没有的,实用也适合面试的时候有自己的特别的算法等。链接地址:

https://item.taobao.com/item.htm?id=560824552299

经验分享 程序员 微信小程序 职场和发展