<span class="hljs-meta">@Override
<span class="hljs-keyword">public <span class="hljs-function"><span class="hljs-keyword">void <span class="hljs-title">sort<span class="hljs-params">(T[] list,Comparator comp) {
<span class="hljs-keyword">boolean swapped = <span class="hljs-keyword">true;
<span class="hljs-keyword">for (<span class="hljs-keyword">int i = <span class="hljs-number">1,len = list.length; i < len && swapped; ++i) {
swapped = <span class="hljs-keyword">false;
<span class="hljs-keyword">for (<span class="hljs-keyword">int j = <span class="hljs-number">0; j < len - i; ++j) {
<span class="hljs-keyword">if (comp.compare(list[j],list[j + <span class="hljs-number">1]) > <span class="hljs-number">0) {
T temp = list[j];
list[j] = list[j + <span class="hljs-number">1];
list[j + <span class="hljs-number">1] = temp;
swapped = <span class="hljs-keyword">true;
}
}
}
}
}
<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">
95、用Java写一个折半查找。
答:折半查找,也称二分查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这种搜索算法每一次比较都使搜索范围缩小一半,其时间复杂度是O(logN)。
|