1. 首页
  2. IT资讯

你真的会写二分查找吗?

“u003Cpu003Eu003Cstrongu003E蓝色字体u003Cu002Fstrongu003E,选择“标星u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-5″u003E公众号u003Cu002Fiu003E”u003Cu002Fpu003Eu003Cpu003E优质文章,第一时间送达u003Cu002Fpu003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002FRbBH7dh8YhRwXK” img_width=”640″ img_height=”18″ alt=”你真的会写二分查找吗?” inline=”0″u003Eu003Cpu003E来源 | cnblogsu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E.comu003Cu002Fiu003Eu002Fluoxn28u002Fpu002F5767571.htmlu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E1、二分查找u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。u003Cu002Fpu003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002FRbq5mMaAOPiIH6″ img_width=”488″ img_height=”263″ alt=”你真的会写二分查找吗?” inline=”0″u003Eu003Cpreu003Eu003Ccodeu003Eu002F**u003Cu002Fcodeu003Eu003Ccodeu003E * 二分查找,找到该值在数组中的下标,否则为-1u003Cu002Fcodeu003Eu003Ccodeu003E *u002Fu003Cu002Fcodeu003Eu003Ccodeu003Estatic int binarySerach(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] == key) {u003Cu002Fcodeu003Eu003Ccodeu003E return mid;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else if (array[mid] < key) {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E return -1;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E每次移动u003Ccodeu003Eleftu003Cu002Fcodeu003E和u003Ccodeu003Erightu003Cu002Fcodeu003E指针的时候,需要在mid的基础上u003Ccodeu003E+1u003Cu002Fcodeu003E或者u003Ccodeu003E-1u003Cu002Fcodeu003E, 防止出现死循环, 程序也就能够正确的运行。u003Cemu003E欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Femu003Eu003Cu002Fpu003Eu003Cblockquoteu003E注意:代码中的判断条件必须是u003Ccodeu003Ewhile (left <= right)u003Cu002Fcodeu003E,否则的话判断条件不完整,比如:u003Ccodeu003Earray[3] = {1, 3, 5};u003Cu002Fcodeu003E待查找的键为5,此时在(u003Ccodeu003Elow < highu003Cu002Fcodeu003E)条件下就会找不到,因为low和high相等时,指向元素5,但是此时条件不成立,没有进入u003Ccodeu003Ewhileu003Cu002Fcodeu003E中。u003Cu002Fblockquoteu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h2″u003Eu003Cstrongu003E2、二分查找的变种u003Cu002Fstrongu003Eu003Cu002Fh1u003E关于二分查找,如果条件稍微变换一下,比如:数组之中的数据可能可以重复,要求返回匹配的数据的最小(或最大)的下标;更近一步, 需要找出数组中第一个大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素(也就是最小的大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素的)下标,等等。这些,虽然只有一点点的变化,实现的时候确实要更加的细心。u003Cemu003E欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Femu003Eu003Cpu003E二分查找的变种和二分查找原理一样,主要就是变换判断条件(也就是边界条件),如果想直接看如何记忆这些变种的窍门,请直接翻到本文最后。下面来看几种二分查找变种的代码:u003Cu002Fpu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003Eu003Cstrongu003E2.1、查找第一个与key相等的元素u003Cu002Fstrongu003Eu003Cu002Fh2u003E查找第一个相等的元素,也就是说等于查找u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素有好多个,返回这些元素最左边的元素下标。u003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找第一个相等的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findFirstEqual(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] >= key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1; u002Fu002F 欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E if (left < array.length && array[left] == key) {u003Cu002Fcodeu003Eu003Ccodeu003E return left;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E return -1;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003Eu003Cstrongu003E2.2、查找最后一个与key相等的元素u003Cu002Fstrongu003Eu003Cu002Fh2u003E查找最后一个相等的元素,也就是说等于查找u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素有好多个,返回这些元素最右边的元素下标。u003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找最后一个相等的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findLastEqual(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] <= key) {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1; u002Fu002F欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E if (right >= 0 && array[right] == key) {u003Cu002Fcodeu003Eu003Ccodeu003E return right;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E return -1;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003Eu003Cstrongu003E2.3、查找最后一个等于或者小于key的元素u003Cu002Fstrongu003Eu003Cu002Fh2u003E查找最后一个等于或者小于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素,也就是说等于查找u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素有好多个,返回这些元素最右边的元素下标;如果没有等于u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素,则返回小于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的最右边元素下标。u003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找最后一个等于或者小于key的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findLastEqualSmaller(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] > key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E return right;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003Eu003Cstrongu003E2.4、查找最后一个小于key的元素u003Cu002Fstrongu003Eu003Cu002Fh2u003Eu003Cpu003E查找最后一个小于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素,也就是说返回小于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的最右边元素下标。u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找最后一个小于key的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findLastSmaller(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] >= key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E return right;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003Eu003Cstrongu003E2.5、查找第一个等于或者大于key的元素u003Cu002Fstrongu003Eu003Cu002Fh2u003E查找第一个等于或者大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素,也就是说等于查找u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素有好多个,返回这些元素最左边的元素下标;如果没有等于u003Ccodeu003Ekeyu003Cu002Fcodeu003E值的元素,则返回大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的最左边元素下标。u003Cemu003E欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Femu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找第一个等于或者大于key的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findFirstEqualLarger(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] >= key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E return left;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E2.6、查找第一个大于key的元素u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E查找第一个等于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素,也就是说返回大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的最左边元素下标。u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找第一个大于key的元素u003Cu002Fcodeu003Eu003Ccodeu003Estatic int findFirstLarger(int[] array, int key) {u003Cu002Fcodeu003Eu003Ccodeu003E int left = 0;u003Cu002Fcodeu003Eu003Ccodeu003E int right = array.length – 1;u003Cu002Fcodeu003Eu003Cbru003Eu003Ccodeu003E u002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003E while (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] > key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E return left;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h2″u003Eu003Cstrongu003E3、二分查找变种总结u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F 这里必须是 <=u003Cu002Fcodeu003Eu003Ccodeu003Ewhile (left <= right) {u003Cu002Fcodeu003Eu003Ccodeu003E int mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003E if (array[mid] ? key) {u003Cu002Fcodeu003Eu003Ccodeu003E u002Fu002F… right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E else {u003Cu002Fcodeu003Eu003Ccodeu003E u002Fu002F … left = mid + 1; 欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Fcodeu003Eu003Ccodeu003E }u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Ccodeu003Ereturn xxx;u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E二分查找变种较多,不过它们的“套路”是一样的,以上代码就是其套路,如何快速写出二分查找的代码,只需按照以下步骤即可:u003Cu002Fpu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003E1、首先判断出是返回left,还是返回rightu003Cu002Fh2u003E因为我们知道最后跳出u003Ccodeu003Ewhile (left <= right)u003Cu002Fcodeu003E循环条件是u003Ccodeu003Eright < leftu003Cu002Fcodeu003E,且u003Ccodeu003Eright = left – 1u003Cu002Fcodeu003E。最后u003Ccodeu003Erightu003Cu002Fcodeu003E和u003Ccodeu003Eleftu003Cu002Fcodeu003E一定是卡在”边界值”的左右两边,如果是比较值为u003Ccodeu003Ekeyu003Cu002Fcodeu003E,查找小于等于(或者是小于)u003Ccodeu003Ekeyu003Cu002Fcodeu003E的元素,则边界值就是等于u003Ccodeu003Ekeyu003Cu002Fcodeu003E的所有元素的最左边那个,其实应该返回u003Ccodeu003Eleftu003Cu002Fcodeu003E。u003Cemu003E欢迎u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E微信u003Cu002Fiu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E搜索u003Cu002Fiu003E Web项目聚集地 获取更多博文。u003Cu002Femu003E以数组u003Ccodeu003E{1, 2, 3, 3, 4, 5}u003Cu002Fcodeu003E为例,如果需要查找第一个等于或者小于3的元素下标,我们比较的key值是3,则最后u003Ccodeu003Eleftu003Cu002Fcodeu003E和u003Ccodeu003Erightu003Cu002Fcodeu003E需要满足以下条件:u003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002FRbq5mMj3cujtRn” img_width=”713″ img_height=”398″ alt=”你真的会写二分查找吗?” inline=”0″u003Eu003Cpu003E我们比较的u003Ccodeu003Ekeyu003Cu002Fcodeu003E值是3,所以此时我们需要返回u003Ccodeu003Eleftu003Cu002Fcodeu003E。u003Cu002Fpu003Eu003Ch2 toutiao-origin=”h3″u003E2、判断出比较符号u003Cu002Fh2u003Eu003Cpreu003Eu003Ccodeu003Eint mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003Eif (array[mid] ? key) {u003Cu002Fcodeu003Eu003Ccodeu003E u002Fu002F… right = xxx;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Ccodeu003Eelse {u003Cu002Fcodeu003Eu003Ccodeu003E u002Fu002F … left = xxx;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E也就是这里的u003Ccodeu003Eif (array[mid] ? key)u003Cu002Fcodeu003E中的判断符号,u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-5″u003E结合u003Cu002Fiu003E步骤1和给出的条件,如果是查找小于等于key的元素,则知道应该使用判断符号u003Ccodeu003E>=u003Cu002Fcodeu003E,因为是要返回u003Ccodeu003Eleftu003Cu002Fcodeu003E,所以如果u003Ccodeu003Earray[mid]u003Cu002Fcodeu003E等于或者大于u003Ccodeu003Ekeyu003Cu002Fcodeu003E,就应该使用u003Ccodeu003E>=u003Cu002Fcodeu003E,以下是完整代码u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F 查找小于等于key的元素u003Cu002Fcodeu003Eu003Ccodeu003Eint mid = (left + right) u002F 2;u003Cu002Fcodeu003Eu003Ccodeu003Eif (array[mid] >= key) {u003Cu002Fcodeu003Eu003Ccodeu003E right = mid – 1;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Ccodeu003Eelse {u003Cu002Fcodeu003Eu003Ccodeu003E left = mid + 1;u003Cu002Fcodeu003Eu003Ccodeu003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h2″u003Eu003Cstrongu003E参考:u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cpu003Eu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-5″u003Ehttpu003Cu002Fiu003E:u002Fu002Fblog.chinaunix.netu002Fuid-1844931-id-3337784.htmu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-2″u003Elhu003Cu002Fiu003Ettp:u002Fu002Fwwwu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-1″u003E.cnu003Cu002Fiu003Eblogsu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-6″u003E.comu003Cu002Fiu003Eu002Fluoxn28u002Fcategoryu002F802645.htmlu003Cu002Fpu003Eu003Cpu003E如果喜欢本篇文章,欢迎转发、点赞。u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-2″u003E关注u003Cu002Fiu003E订阅号「Web项目聚集地」,回复「进群」即可进入无广告技术交流。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E在看u003Cu002Fstrongu003Eu003Cu002Fpu003E”

原文始发于:你真的会写二分查找吗?

主题测试文章,只做测试使用。发布者:℅傍ㄖ免沦陷dε鬼,转转请注明出处:http://www.cxybcw.com/18110.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code