在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