面试java算法题思路和实例
在java面试中,绕不开的就是算法和数据结构了。问算法可以大概知道你遇到棘手问题时编程的效率。下面我们就来分析一下算法的常规思路和例子:
1.递归法 汉诺塔
这几个是在面试中我们要拿高新必须了解的基本功和例子,在面试中,最容易被问到的就是关于排序问题,如下:
例子:我们拿插入排序中的直接插入排序作为例子,源码如下:
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.二分法搜索
在此我们举一个阿里这些公司会问到的汉诺塔实例:
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