1.順序查找
又稱線性查找,主要用于在線性表中進(jìn)行查找。
一般線性表的順序查找:
從線性表的一端開始,逐個(gè)檢查關(guān)鍵字滿足給定條件。若查找到某個(gè)元素的關(guān)鍵字滿足給定條件則查找成功,返回該元素在線性表中的位置。若已經(jīng)查找到表的另一端,但還沒有查找到符合給定條件的元素,則返回查找失敗的信息。
有序表的順序查找:
假設(shè)表L是按關(guān)鍵字從小到大排列的,查找的順序是從前往后,待查找元素的關(guān)鍵字為key。當(dāng)查找到第i個(gè)元素時(shí),發(fā)現(xiàn)第i個(gè)元素對(duì)應(yīng)的關(guān)鍵字小于key,但第i+1個(gè)元素對(duì)應(yīng)的關(guān)鍵字大于key,這時(shí)就可以返回查找失敗的信息。
2.折半查找
又稱二分查找,它僅適用于有序的順序表
首先將給定值key與表中間位置的元素比較,若相等,則查找成功,返回該元素的存儲(chǔ)位置。若不等,則所需查找的元素只能在中間元素以外的前半部分或后半部分。然后在縮小的范圍內(nèi)繼續(xù)進(jìn)行同樣的查找,如此重復(fù),直到找到為止?;虼_定表中沒有所需要查找的元素,則查找不成功,返回查找失敗的信息。
3.分塊查找
又稱按索引順序查找,它吸取了順序查找和折半查找各自的優(yōu)點(diǎn),既有動(dòng)態(tài)結(jié)構(gòu),又適于快速查找
將查找表分為若干子塊。塊內(nèi)的元素可以無(wú)序,但塊之間是有序的,第一個(gè)塊中的最大關(guān)鍵字小于第二個(gè)塊中的所有記錄的關(guān)鍵字,以此類推。再建立一個(gè)索引表,索引表中的每個(gè)元素含有各塊的最大關(guān)鍵字和各塊中的第一個(gè)元素的地址,索引表按關(guān)鍵字有序排列