資料結構 查詢

2021-10-24 21:26:03 字數 1567 閱讀 1743

查詢是指在資料集合中尋找滿足某種條件的資料元素的過程。

用於查詢的資料集合則稱為查詢表(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.折半...