加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

史上最全Java面试题整理(附参考答案)

发布时间:2020-12-24 09:48:18 所属栏目:运营 来源:网络整理
导读:副标题#e# 下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1、面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类。 继承:基于基类创建新类。

答:折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这种搜索算法每一次比较都使搜索范围缩小一半,其时间复杂度是O(logN)。

<span class="hljs-keyword">public <span class="hljs-class"><span class="hljs-keyword">class <span class="hljs-title">MyUtil {

<span class="hljs-keyword">public <span class="hljs-keyword">static <T extends Comparable> <span class="hljs-function"><span class="hljs-keyword">int <span class="hljs-title">binarySearch<span class="hljs-params">(T[] x,T key) {
<span class="hljs-keyword">return binarySearch(x,x.length- <span class="hljs-number">1,key);
}

<span class="hljs-comment">// 使用循环实现的二分查找
<span class="hljs-keyword">public <span class="hljs-keyword">static <span class="hljs-function"><span class="hljs-keyword">int <span class="hljs-title">binarySearch<span class="hljs-params">(T[] x,Comparator comp) {
<span class="hljs-keyword">int low = <span class="hljs-number">0;
<span class="hljs-keyword">int high = x.length - <span class="hljs-number">1;
<span class="hljs-keyword">while (low <= high) {
<span class="hljs-keyword">int mid = (low + high) >>> <span class="hljs-number">1;
<span class="hljs-keyword">int cmp = comp.compare(x[mid],key);
<span class="hljs-keyword">if (cmp < <span class="hljs-number">0) {
low= mid + <span class="hljs-number">1;
}
<span class="hljs-keyword">else <span class="hljs-keyword">if (cmp > <span class="hljs-number">0) {
high= mid - <span class="hljs-number">1;
}
<span class="hljs-keyword">else {
<span class="hljs-keyword">return mid;
}
}
<span class="hljs-keyword">return -<span class="hljs-number">1;
}

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!