三種查找算法:順序查找,二分法查找(折半查找),分塊查找,散列表(以后談)
一、順序查找的基本思想:
從表的一端開始,順序掃描表,依次將掃描到的結(jié)點(diǎn)關(guān)鍵字和給定值(假定為a)相比較,若當(dāng)前結(jié)點(diǎn)關(guān)鍵字與a相等,則查找成功;若掃描結(jié)束后,仍未找到關(guān)鍵字等于a的結(jié)點(diǎn),則查找失敗。
說白了就是,從頭到尾,一個(gè)一個(gè)地比,找著相同的就成功,找不到就失敗。很明顯的缺點(diǎn)就是查找效率低。
適用于線性表的順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
計(jì)算平均查找長度。
例如上表,查找1,需要1次,查找2需要2次,依次往下推,可知查找16需要16次,
可以看出,我們只要將這些查找次數(shù)求和(我們初中學(xué)的,上底加下底乘以高除以2),然后除以結(jié)點(diǎn)數(shù),即為平均查找長度。
設(shè)n=節(jié)點(diǎn)數(shù)
平均查找長度=(n+1)/2