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

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

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

<span class="hljs-comment">// 使用递归实现的二分查找
<span class="hljs-keyword">private <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,<span class="hljs-keyword">int low,<span class="hljs-keyword">int high,T key) {
<span class="hljs-keyword">if(low <= high) {
<span class="hljs-keyword">int mid = low + ((high - low) >> <span class="hljs-number">1);
<span class="hljs-keyword">if(key.compareTo(x[mid])== <span class="hljs-number">0) {
<span class="hljs-keyword">return mid;
}
<span class="hljs-keyword">else <span class="hljs-keyword">if(key.compareTo(x[mid])< <span class="hljs-number">0) {
<span class="hljs-keyword">return binarySearch(x,mid - <span class="hljs-number">1,key);
}
<span class="hljs-keyword">else {
<span class="hljs-keyword">return binarySearch(x,mid + <span class="hljs-number">1,key);
}
}
<span class="hljs-keyword">return -<span class="hljs-number">1;
}
}

<span class="cke_reset cke_widget_drag_handler_container"><img class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="15" height="15" data-cke-widget-drag-handler="1">

说明:上面的代码中给出了折半查找的两个版本,一个用递归实现,一个用循环实现。需要注意的是计算中间位置时不应该使用(high+ low) / 2的方式,因为加法运算可能导致整数越界,这里应该使用以下三种方式之一:low + (high - low) / 2或low + (high – low) >> 1或(low + high) >>> 1(>>>是逻辑右移,是不带符号位的右移)

(编辑:厦门网)

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

热点阅读