看似簡單的二分,真正用起來還是有很多不容易的地方的,所以說,有說99%的程式設計師寫的二分通常是錯的。因為我們可能要在有序佇列中找小於、小於等於、大於、大於等於這些情況。往往我們很容易搞暈。我的乙個朋友notsure很深入的研究過各種情況,我這裡借用他的二分的寫法,如果你認同這種寫法對你來說容易理解,可以在理解的基礎上硬記住。
按照其寫法,假設非降佇列是a,查詢關鍵字為key,無論上面四種情況中的任何一種,二分後都有這種性質:a[high]<=key<=a[low]。
大框架必定是:
1.關鍵字小於key的元素的位置:
因為要找小於key的元素,根據性質,毫無疑問肯定是high了,然後我們來看條件a[mid]2.關鍵字小於等於key的元素的位置:
結果仍然是high,但是條件a[mid]<=key,等於的時候移動的是low,high不動,所以結果最後是小於等於key。
3.關鍵字大於key的元素的位置:
根據性質結果是low,但是這裡要注意了,看條件a[mid]<=key,為什麼呢?還是看a[mid]=key的情況,相等的時候low還是往大處走,所以最後會大於key。
4.關鍵字大於等於key的元素的位置:
條件a[mid]總結:
硬記大框架,小的是high,大的是low,判斷條件主要看a[mid]=key的時候決定結果的high或者low是否變,變了那麼最後不可能和key相等,那麼是小於或者大於,沒變還是有可能相等,所以是小於等於或者大於等於。
不容易系列之二
你活的不容易,我活的不容易,他活的也不容易。不過,如果你看了下面的故事,就會知道,有位老漢比你還不容易。重慶市郊黃泥板村的徐老漢 大號徐東海,簡稱xdh 這兩年辛辛苦苦養了不少羊,到了今年夏天,由於眾所周知的高溫乾旱,實在沒辦法解決牲畜的飲水問題,就決定把這些羊都趕到集市去賣。從黃泥板村到交易地點要...
不容易系列
題目描述 你活的不容易,我活的不容易,他活的也不容易。不過,如果你看了下面的故事,就會知道,有位老漢比你還不容易。重慶市郊黃泥板村的徐老漢 大號徐東海,簡稱xdh 這兩年辛辛苦苦養了不少羊,到了今年夏天,由於眾所周知的高溫乾旱,實在沒辦法解決牲畜的飲水問題,就決定把這些羊都趕到集市去賣。從黃泥板村到...
2042 不容易系列之二
problem description 你活的不容易,我活的不容易,他活的也不容易。不過,如果你看了下面的故事,就會知道,有位老漢比你還不容易。重慶市郊黃泥板村的徐老漢 大號徐東海,簡稱xdh 這兩年辛辛苦苦養了不少羊,到了今年夏天,由於眾所周知的高溫乾旱,實在沒辦法解決牲畜的飲水問題,就決定把這些...