面试--二分查找
參加面試的時候常被提問到一個問題--請你解釋一下二分查找
我們用聯想記憶法:該算法有兩個名字(二分查找、折半查找)、優點三個(比較次數少、查找速度快、平均性能好)、缺點兩個(待查找表為有序表、插入刪除困難)。用數字表示就是232,圖形表示就是=≠=(形容為 此二分非彼二分 )
那么我們在面試的時候就可以這樣表述:(面試的時候最好自帶紙筆,原因不解釋)用筆寫出剛剛的=≠=的公式(原因是聯想記憶更容易回憶起以前的內容),指著左邊的等號跟面試官說“此二分非彼二分,二分查找不是簡單的分兩份,然后執行查找;它有兩個名字,一個叫二分查找、另一個叫折半查找;就是在一個有序數組中,取數組中的中間值和要找的值進行比較,當要查找的值大于中間值,則在右邊的區間繼續取一個中間值和要比較的數進行比較。當找查找的值小于中間值時則反之,直至最后要查找的值和中間值相同,則說明找到該值。該算法有三個優點(指向中間的不等號),一是比較次數少、二是查找速度快、三是平均性能好。因為次數少了,速度自然快了,平均性能當然也就好了。但是呢,它也有兩個缺點(指向右邊的等號),其一是必須有序,沒序的話,分成兩份比較中間值的話沒有意義,而排序本身是一件很耗時的運算;其二是增刪困難,因為增刪都要移動大量的結點。因此二分查找適用于那種一經建立就很少改動、而又經常需要查找的線性表(順序存儲結構)”到這里,如果能表達到這個程度已經是非常不錯的了,但是如果能舉個實際例子就更好了,因為面試官問你的初衷就是想知道你懂不懂,會不會用。而且本人寫這篇的初衷也是想讓閱讀的人跟本人一樣,從理解到能實際運用,這樣對你、對我、對面試官都是一件好事不是嗎?
?
轉載于:https://www.cnblogs.com/ylHe/p/9477750.html
總結
- 上一篇: java 枚举类型enum
- 下一篇: 将字符串转换成16进制