A. 數據結構與演算法順序查找和折半查找
1.順序查找
又稱線性查找,主要用於在線性表中進行查找。
一般線性表的順序查找:
從線性表的一端開始,逐個檢查關鍵字滿足給定條件。若查找到某個元素的關鍵字滿足給定條件則查找成功,返回該元素在線性表中的位置。若已經查找到表的另一端,但還沒有查找到符合給定條件的元素,則返回查找失敗的信息。
有序表的順序查找:
假設表L是按關鍵字從小到大排列的,查找的順序是從前往後,待查找元素的關鍵字為key。當查找到第i個元素時,發現第i個元素對應的關鍵字小於key,但第i+1個元素對應的關鍵字大於key,這時就可以返回查找失敗的信息。
2.折半查找
又稱二分查找,它僅適用於有序的順序表
首先將給定值key與表中間位置的元素比較,若相等,則查找成功,返回該元素的存儲位置。若不等,則所需查找的元素只能在中間元素以外的前半部分或後半部分。然後在縮小的范圍內繼續進行同樣的查找,如此重復,直到找到為止。或確定表中沒有所需要查找的元素,則查找不成功,返回查找失敗的信息。
3.分塊查找
又稱按索引順序查找,它吸取了順序查找和折半查找各自的優點,既有動態結構,又適於快速查找
將查找表分為若乾子塊。塊內的元素可以無序,但塊之間是有序的,第一個塊中的最大關鍵字小於第二個塊中的所有記錄的關鍵字,以此類推。再建立一個索引表,索引表中的每個元素含有各塊的最大關鍵字和各塊中的第一個元素的地址,索引表按關鍵字有序排列