在看極客時間上王爭老師的數據結構和算法課,15節二分查找,看到這段感覺受到啟發,位運算右移一位就是除以2,例:1000(8) ?0100(4) 0010(2)
實際上,mid=(low+high)/2 這種寫法是有問題的。因為如果 low 和 high 比較大的話,兩者之和就有可能會溢出。改進的方法是將 mid 的計算方式寫成 low+(hgh-low)/2。更進一步,如果要將性能優化到極致的話,我們可以將這里的除以 2 操作轉化成位運算 low+((high-low)>>1)。因為相比除法運算來說,計算機處理位運算要快得多。