查詢是指在資料集合中尋找滿足某種條件的資料元素的過程。
用於查詢的資料集合則稱為查詢表(search table)。查詢表中的資料元素型別是一致的,並且有能夠唯一標識出元素的關鍵字。
如果從查詢表中找出了關鍵字等於某個給定值的資料元素,則稱為查詢成功,否則稱為查詢不成功。
通常對查詢表有4種操作:
(1)查詢:在查詢表中檢視某個特定的記錄是否存在;
(2)檢索:查詢某個特定記錄的各種屬性;
(3)插入:將某個不存在的資料元素插入到查詢表中;
(4)刪除:從查詢表中刪除某個特定元素。
如果對查詢表只執行前兩種操作,則稱這類查詢表為靜態查詢表。靜態查詢表建立以後,就不能再執行插入或刪除操作,查詢表也不再發生變化,其操作主要包括順序查詢、折半查詢、分塊查詢等。如果對查詢表還要執行後兩種操作,則稱這類查詢表為動態查詢表。其操作往往使用二叉平衡樹、b-樹或雜湊表來處理。
c++ stl的中包含有查詢演算法的實現:
(1)std::find(),使用順序查詢演算法,通過operator==()函式比較,在容器中查詢指定元素。如果找到,返回第乙個找到元素的iter,如果找不到返回container.end()。不要求容器內元素事先排序。
(2)std::find_if(),使用順序查詢演算法,返回第乙個滿足給定條件函式的元素。
(3)std::find_if_not(),使用順序查詢演算法,返回第乙個不滿足給定條件函式的元素。
(4)std::find_last(),使用順序查詢演算法,返回最後乙個滿足給定條件函式的子串行的第乙個元素,其所在的位置。
(5)std::find_first_of(),使用順序查詢演算法,返回第乙個存在於指定查詢目標子串行中元素,其所在的位置。
(6)std::adjacent_find(),使用順序查詢演算法,返回第一次出現連續兩個元素相同時,其第乙個元素所在的位置。
(7)std::search(),使用順序查詢演算法,返回要查詢子串行在待查詢序列中第一次出現時,其第乙個元素所在的位置。
(8)std::search_n(),使用順序查詢演算法,找到區間內連續n個滿足某一條件或者等於某一值的情況,並返回滿足條件的第乙個元素所在的位置。
(9)std::lower_bound(),使用折半查詢演算法,返回第乙個大於等於給定值的元素的位置。該函式要求容器內元素已經過排序,或至少對於給定值已對容器內元素進行分組劃分。
(10)std::upper_bound(),使用折半查詢演算法,返回第乙個大於給定值的元素的位置。該函式要求容器內元素已經過排序,或至少對於給定值已對容器內元素進行分組劃分。
(11)std::equal_range(),相當於std::make_pair(std::lower_bound(), std::upper_bound() )。
(12)std::binary_search(),使用折半查詢演算法,如果找到給定值元素則返回true,否則返回false。該函式要求容器內元素已經過排序,或至少對於給定值已對容器內元素進行分組劃分。
查詢 資料結構
分類 資料結構與演算法 c c 2012 07 24 16 17 614人閱讀收藏 舉報幾種查詢演算法 順序查詢,折半查詢,分塊查詢,雜湊表 一 順序查詢的基本思想 從表的一端開始,向另一端逐個按給定值kx 與關鍵碼進行比較,若找到,查詢成功,並給出資料元素在表中的位置 若整個表檢測完,仍未找到與k...
資料結構 查詢
查詢 searching 也稱 檢索,查表,就是在大量的資訊集中尋找乙個特定的資訊元素。查詢就是根據 給定的關鍵字值,在 查詢表中確定乙個關鍵字等於給定的 記錄或資料元素。若存在這樣的資料元素,則稱查詢成功的,否則查詢不成功。查詢是許多重要的電腦程式中 最耗費時間的部分,查詢演算法的優劣密切關係著查...
資料結構 查詢
一.靜態查詢表 靜態查詢表是僅對查詢表進行查詢操作,而不能改變其中資料的線性表,可以是基於陣列的順序儲存或以線性鍊錶儲存。靜態查詢表主要有順序表 有序順序表和索引順序表三種。1.順序查詢 函式模型 int seqsearch element list,int searchnum,int n 2.折半...