二分 不容易

2021-05-22 11:03:36 字數 742 閱讀 4638

看似簡單的二分,真正用起來還是有很多不容易的地方的,所以說,有說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 這兩年辛辛苦苦養了不少羊,到了今年夏天,由於眾所周知的高溫乾旱,實在沒辦法解決牲畜的飲水問題,就決定把這些...