最近忙著刷題之余,結合自己的一些demo體會到算法的重要性,優勢
二分查找原理
我相信很多人都會用百度和Google,就不詳細講了。
二分,字面意思就是對半分找東西,一直這么下去。
例:
有10個數(0 - 9)順序排列(二分查找的關鍵);左右區分
第一次二分
左邊-> 0,1,2,3,4
右邊-> 5,6,7,8,9
需要查找8的位置,10個數的中間就是5了,判斷下是不是中間數;重點來了->比較查找數和中間數大小,就可以判斷是在左還是右,結果再右邊。
第二次二分
左邊-> 5,6 (NO)
中間 =7(NO)
右邊-> 8,9(YES)
按照第一次二分的原理,還是右邊
第三次二分已經沒啥必要了(怎么分?)
都寫了相信的注釋...
為啥結束位置-1?我們需要的是下標,不是個數
中間下標不要擔心小數點...(腦殼短路的,直接百度,或者看下數組objectAtIndex)
這里有中文注釋->看不懂打我啊
重點:判斷左右....然后二分下標;沒懂的多看幾遍,還沒懂的來打我。
說了一段原理,代碼也上了,最后來個測試,不說百萬級數據我們來個差不多的測試下
100000個數的查找時間對比