<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>archive</title><link>https://archive-w.netlify.app/algo/search/</link><description>Recent content on archive</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://archive-w.netlify.app/algo/search/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://archive-w.netlify.app/algo/search/binary-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://archive-w.netlify.app/algo/search/binary-search/</guid><description>&lt;h2 id="binary-search">
 binary search
 &lt;a class="anchor" href="#binary-search">#&lt;/a>
&lt;/h2>
&lt;h3 id="implement">
 implement
 &lt;a class="anchor" href="#implement">#&lt;/a>
&lt;/h3>
&lt;h6 id="java" class="anchor_hr" style="font-size: 0rem; margin: 0; padding: 0; border-width: 0px;">&lt;/h6>&lt;div class="docsify-tabs docsify-tabs--classic">&lt;button anchorId="java" class="docsify-tabs__tab" data-tab="JAVA">JAVA&lt;/button>&lt;div class="docsify-tabs__content" data-tab-content="java">
&lt;div class="outer yosemite">&lt;div class="dot red">&lt;/div>&lt;div class="dot amber">&lt;/div>&lt;div class="dot green">&lt;/div>&lt;/div>
&lt;div class="code-toolbar">&lt;pre data-lang="java" data-line="" class="language-java line-numbers" style="max-height: none">&lt;code class="language-java">import org.junit.Assert;
import org.junit.Test;

public class BinarySearch {

 @Test
 public void testBinarySearch(){
 int[] arr = new int[]{4,8,10, 16,18,20,50,100};

 Assert.assertEquals(&amp;quot;&amp;quot;, binarySearch(arr, 0, arr.length - 1, 4), 0);
 Assert.assertEquals(&amp;quot;&amp;quot;, binarySearch(arr, 0, arr.length - 1, 16), 3);
 Assert.assertEquals(&amp;quot;&amp;quot;, binarySearch(arr, 0, arr.length - 1, 100), 7);
 Assert.assertEquals(&amp;quot;&amp;quot;, binarySearch(arr, 0, arr.length - 1, 12302), -1);
 }

 private static int binarySearch(int[] arr, int left, int right, int key) {
 if(left &amp;gt; right) { return -1;}

 int mid = (left + right) / 2;
 int midKey = arr[mid];

 if(key &amp;gt; midKey){ return binarySearch(arr, mid + 1, right, key); }

 // right = mid - 1 才对，不然会发生 StackOverflowError, 比如： Assert.assertEquals(&amp;quot;&amp;quot;, binarySearch(arr, 0, arr.length - 1, 2), -1);
 // if(key &amp;lt; midKey){ return binarySearch(arr, left, mid, key); }
 if(key &amp;lt; midKey){ return binarySearch(arr, left, mid - 1, key); }
 return mid;
 }
}
&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>&lt;/div>
&lt;h2 id="reference">
 Reference
 &lt;a class="anchor" href="#reference">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>


 &lt;a href="https://www.bilibili.com/video/BV1E4411H73v?p=82&amp;vd_source=550a4dc4b2a914c0681a14307bbe8cbe" rel="noopener" target="_blank">https://www.bilibili.com/video/BV1E4411H73v?p=82&amp;vd_source=550a4dc4b2a914c0681a14307bbe8cbe&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>