今天來講講這個卡了我一天半的問題,其實這個問題的發生真的是出乎我的意料之外,因為我的二元搜尋法的內容是完全正確的這也就導致這個錯誤很難被發現,因為這是我第一次寫二元搜尋法,而問題的本身竟然不是出在演算法身上,害我花了好多的時間專注在演算法除錯中,但是我的方法並沒有錯,因此走入一個死循環當中久久不能自拔。
一直做debug發現最終都會跳出迴圈外這讓我很困惑直到看見這個
仔細看會發現一件很奇怪的事我要找的數75在排序好的陣列中索引值是7,也就是說當mid = 7的時候代表已經找到了,但是看右邊的表會發現mid的確是7但是程式確跑到下面要判斷是比mid大還是小的地方,看到的時候真的挺傻眼的,因為這代表實際上索引值是7的數並不是75,於是我去檢查陣列裡的內容真的令人驚訝!!
發現了嗎實際上的陣列內容是由大到小,但是我印出的結果卻是從小的大????
這就是最大的問題,我做氣泡排序法時換完的陣列是由大到小,但是我印出來的結果卻是由小而大,錯中之錯啊,輸出的結果卻恰好看上去是正確的,因此完全找不到問題啊
要改成這樣才是正確的,其實為了避免會在發生這種錯,其實可以直接用Arrays.toString()
這個語法就不會有問題,下方是完整程式碼
兩種結果