面试java算法题思路和实例

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

1.递归法     汉诺塔

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

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

1.插入排序
2.选择排序
3.交换排序
4.归并排序
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.欧几里德算法
3.汉诺塔
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

你可能感兴趣的:(面试java算法题思路和实例)