推 FRAXIS: 應該可以寫 if (count > k) hi = mid - 1 else lo = mid 06/16 07:56
→ FRAXIS: 在 sorted matrix 找中位數的問題 以前在版上有討論過 06/16 07:57
推 JameC: 在第三行有個註解:[lo, hi),如果hi = mid - 1,搜索的區 06/16 16:03
→ JameC: 間就會變成[lo, hi],這樣會出問題。 06/16 16:03
→ JameC: 可以仔細思考看看,他最後為什麼是return lo,如果搜索的區 06/16 16:05
→ JameC: 間變成[lo, hi],那最後會無法確定答案是哪一個。 06/16 16:06
→ JameC: 在做二分搜的時候,通常都不會包含 06/16 16:07
→ JameC: 終點,就是這個原因 06/16 16:08
→ JameC: 這個題目我沒有仔細地研究,只是聊聊我對二分搜的一些理解 06/16 16:09
→ JameC: 有錯還請不吝指正 06/16 16:10
感謝各位回覆,但我還是不太懂,到底甚麼時候 high = mid - 1,甚麼時候 high = mid
以及甚麼時候 return mid,甚麼時候 return low
再以這題做例子 http://tinyurl.com/y8nezn9x
用binary search的作法: http://tinyurl.com/ya27ye8l
這裡是 high = mid - 1,但我的這篇文章原始題目的high卻是 high = mid
搞得我好亂啊........
自己實際代數字下去也歸納不出到底甚麼時候要high = mid 甚麼時候要 high = mid - 1
該 return mid 還是return low 我也一頭霧水............
※ 編輯: woody3724 (150.117.206.13), 06/17/2017 23:55:43
推 JameC: 嗯...其實我也不太懂他的寫法,我自己寫的話,while迴圈內 06/18 11:55
→ JameC: 只要三行就可以搞定,我晚點再來想想該怎麼解釋比較好。 06/18 11:56
→ pttworld: if有判斷mid等於則high就是mid-1,因為mid已經不是了。 06/18 21:10