java经典算法面试题有哪些?java经典算法面试题总结

Java算法很重要,很多java开发中都需要算法,并且在面试中也会问一些java算法问题,因此掌握算法的使用很有必要,那java经典算法面试题有哪些?下面来我们就来给大家讲解一下。

java经典算法面试题.jpg

1、算法的时间复杂度时候是什么?

答案:算法的时间复杂度表示程序运行完成所需的总时间,它通常用大O表示法来表示。

2、合并k个有序(假设升序)数组的具体步骤是什么?

答案:将k个数组的第一个元素取出来,维护一个小顶堆;弹出堆顶元素存入结果数组中,并把该元素所在数组的下一个元素取出来压入队中;调整堆的结构,使其满足小顶堆的定义;重复前两步直到合并完成。

3、一个数组怎么输出前K大的值、时间复杂度?

答案:借助快排partition的思想,平均时间复杂度是O(n)

4、用A表示1第一列,B表示2第二列,。。。,Z表示26,AA表示27,AB表示28。。。以此类推。请写出一个函数,输入用字母表示的列号编码,输出它是第几列。

答案:这道题的解题思路关键在于26进制转10进制。

5、输入一个正数n,输出所有和为n 连续正数序列。

答案:输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3 个连续序列1-5、4-6 和7-8。

6、两个排序数组A1和A2,现在想把A2插入A1中并仍保持有序。

答案:数组是个顺序表,我们往数组中插入某个数的话必须要移动当前位置后面所有的数。常规的思路是每次插入一个数并移动后面的数,这样多次插入后会导致数组中有的数被移动了多次,极大浪费了效率。我们希望每个数移动一次就到达它最终的位置,所以我们往往会反向移动数组,这样做的好处是移动当前数时后面的数已经到达了最终位置,我们移动当前数不会影响到后面的数,这样就确保了每个数只被移动一次。

7、推排序是什么?

答案:堆排序可以看成是选择排序的改进,它可以定义为基于比较的排序算法。它将其输入划分为未排序和排序的区域,通过不断消除最小元素并将其移动到排序区域来收缩未排序区域。

8、快速排序算法是什么?

答案:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;空间复杂度为O(log2n);时间复杂度比较复杂,最好的情况是O(n),最差的情况是O(n2),所以平时说的O(nlogn),为其平均时间复杂度。

这些java算法面试题都是在面试中经常会问到的,并且java算法也是java中重点,我们在掌握好之后,才能更好的进行java开发!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

java多线程与高并发面试题有哪些?java多线程与高并发面试题分享

如何查看json文件?json有哪些数据类型?

redis的分布式锁实现原理是什么?redis分布式锁有哪些命令?