根據資料量的大小 可將查詢分為內部查詢和外部查詢
內部查詢:資料量較小的檔案可以一次性全部載入到記憶體中進行查詢
外部查詢:資料量較大的檔案無法一次性載入到記憶體中處理,需要使用輔助儲存器來分次處理
注意:我們根據在查詢過程中查詢的檔案是否改動,將查詢分為靜態查詢和動態查詢
順序查詢是一種線性查詢,最簡單的查詢方式。逐個遍歷,最壞的情況下,時間複雜度為o(n)
示例**
def
ordersearch
(num)
:import random
count =
0# data = [0] * 8
# for i in range(8):
# data[i] = random.randint(1, 100)
data =[1
,2,3
,4,5
,6,7
,8]for i in
range
(len
(data)):
count +=
1if data[i]
== num:
print
("找到了,在陣列data的第個位置,查詢了次"
.format
(num, i, count)
)break
else
:print
("找了次,沒找到"
.format
(count)
)ordersearch(
10)
前提是資料已經是有序的狀態,將資料分割成兩等份,再比較鍵值與中間值的大小,如果鍵值小於中間值,確定查詢的資料在前半段否則在後半段。時間複雜度為o(logn)
def
binsearch
(data, val)
: low =
0 high =
len(data)-1
while low <= high and val !=-1
: mid =
int(
(low + high)/2
)if val < data[mid]
: high = mid -
1elif val > data[mid]
: low = mid +
1else
:return mid
return-1
defbinary_search
(alist, item)
:"""
(遞迴實現)
:param alist:
:param item:
:return:
"""iflen
(alist)==0
:return
false
else
: midpoint =
len(alist)//2
if alist[midpoint]
== item:
return
true
else
:if item < alist[midpoint]
:return binary_search(alist[
:midpoint]
, item)
else
:return binary_search(alist[midpoint +1:
], item)
print
(binsearch([1
,2,3
,4,5
,6,7
,8],
3))
它是二分查詢法的改進版,按照資料位置的分布,利用公式**資料所在的位置,再利用二分法方式漸漸逼近
順序查詢 二分查詢
順序查詢 適用範圍 沒有進行排序的資料序列 缺點 速度非常慢,效率為o n cpp view plain copy 在code上檢視 片派生到我的 片 實現 template type sequencesearch type begin,type end,const type searchvalue...
靜態查詢方法(順序查詢與二分查詢)
靜態查詢的幾種方法 include define maxsize 20 typedef struct lnode list struct lnode 順序查詢 sequential search 採用了建立哨兵的查詢思想,最好查詢複雜度o 1 最壞為o n 平均查詢複雜度為o n 2 int seq...
順序查詢 二分查詢 索引查詢
1.查詢技術的分類。如下圖 2.什麼是順序查詢呢?無序表 順序查詢的原理很簡單,就是遍歷整個列表,逐個進行記錄的關鍵字與給定值比較,若某個記錄的關鍵字和給定值相等,則查詢成功,找到所查的記錄。如果直到最後乙個記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查詢失敗。時間複雜度是o n 3....