本人最近懶癌發作,部落格已經幾個月沒動了,突然良心發現自己二分理解的不好,萬一要去省賽豈不是要收到來自大神的嘲諷?
二分分為四種,嚴格大於某值的最小值;嚴格小於某值的最大值;大於等於某值的最小值;小於等於某值的最大值
我們需要關注三個地方:
1.迴圈的條件 low
2.改變邊界的方法及條件:滿足要求條件的時候對應邊界=mid 否則mid+1或者-1
3.mid的取整方法:如果的找大於某值的最小值 向下取整;小於某值的最大值向上取整
#include#includeusing namespace std;
int main()
; int low=0,high=6,mid=3,target=8;
puts("target:8");
puts("> min");
while(lowtarget)//ok
high = mid;
else
low = mid + 1;
mid = (low + high) / 2;
printf("low=%d,mid=%d,high=%d\n",array[low],array[mid],array[high]);
}printf("%d\n----------------------\n",array[mid]);
low=0,high=6,mid=3,target=8;
puts("< max");
while(low= min");
while(low= target)//ok
high = mid;
else
low = mid + 1;
mid = (low + high) / 2;
printf("low=%d,mid=%d,high=%d\n",array[low],array[mid],array[high]);
}printf("%d\n----------------------\n",array[mid]);
low=0,high=6,mid=3,target=8;
puts("<= max");
while(low
target:8
> min
low=10,mid=12,high=14
low=10,mid=10,high=12
low=10,mid=10,high=10
10----------------------
< max
flag=1,low=2,mid=4,high=6
flag=-1,low=4,mid=6,high=6
flag=-1,low=6,mid=6,high=6
6----------------------
>= min
low=2,mid=4,high=8
low=6,mid=6,high=8
low=8,mid=8,high=8
8----------------------
<= max
low=8,mid=12,high=14
low=8,mid=10,high=10
low=8,mid=8,high=8
8----------------------
excel巨集 終極版
private sub commandbutton1 click sheet1 q20.list sheet2 q20trim.list sheet3 源資料表 副本 新建sheet4 批量合成 刪除空行 變成m 最終資料存於sheet3列pqr 批量合成 dim s as integer s te...
頁面傳參終極版
頁面傳引數是一種比較常見的業務需求,根據實現原理及適用環境可以分為兩大類。在普通瀏覽器端常用的方法有如下幾種 1.利用url傳參 在頁面跳轉的時候通過設定window.location.href新增引數,在接收引數的頁面通過window.location.search獲取引數字串。傳送引數的頁面 w...
kewin 接小球終極版
import pygame import random 1.loading 初始化 pygame.init 2.視窗 dis分開 play玩 展示 screen width 960screen height 540screen pygame.display.set mode screen width...