- 算法超簡單:趣味游戲帶你輕松入門與實踐
- 童晶
- 432字
- 2024-09-10 17:14:26
1.4 算法的效率
回到猜數(shù)字游戲,要猜1到100之間的隨機(jī)整數(shù),可以采用順序查找算法,即從小到大依次猜,直到猜對為止。最壞的情況下,要猜100次才能猜對。
如果采用二分查找算法,每次猜中間的數(shù)值,依次將查找范圍減半,則對于長度為100的數(shù)組,最壞的情況下,查找范圍依次為100、50、25、12、6、3、1,因此最多7次(log2100向上取整)就能猜對。
推廣開來,如果數(shù)組大小為n,順序查找最多需要猜n次,二分查找最多需要猜log2n次。表1-1列出了不同數(shù)據(jù)規(guī)模下,兩種查找算法的效率。數(shù)據(jù)規(guī)模越大,二分查找算法的效率優(yōu)勢越明顯。
表1-1

算法的效率通常使用大O表示法來描述。比如順序查找算法的時間復(fù)雜度記為O(n),表示對規(guī)模為n的數(shù)據(jù)執(zhí)行順序查找算法的最長運(yùn)行時間為n的常數(shù)倍。二分查找算法的效率可以記為O(log2n),表示對規(guī)模為n的數(shù)據(jù)執(zhí)行二分查找算法的最長運(yùn)行時間為n的對數(shù)函數(shù)。
還有一種比二分查找更快的查找算法,那就是哈希查找,也稱為散列查找。哈希查找通過將關(guān)鍵字映射到哈希表中的索引位置來快速定位目標(biāo)數(shù)據(jù),其時間復(fù)雜度為O(1)。
推薦閱讀
- Getting Started with Citrix XenApp? 7.6
- ServiceNow Application Development
- Python 3.7網(wǎng)絡(luò)爬蟲快速入門
- Photoshop智能手機(jī)APP UI設(shè)計之道
- Hands-On Image Processing with Python
- Vue.js 3.x從入門到精通(視頻教學(xué)版)
- Django:Web Development with Python
- Python圖形化編程(微課版)
- Java Web開發(fā)就該這樣學(xué)
- Python深度學(xué)習(xí)原理、算法與案例
- 快速入門與進(jìn)階:Creo 4·0全實例精講
- JavaScript程序設(shè)計:基礎(chǔ)·PHP·XML
- 大規(guī)模語言模型開發(fā)基礎(chǔ)與實踐
- PHP動態(tài)網(wǎng)站開發(fā)實踐教程
- Python Penetration Testing Essentials