常用的查詢方法 順序查詢 二分查詢法等

2021-10-13 22:38:54 字數 1968 閱讀 2057

根據資料量的大小 可將查詢分為內部查詢和外部查詢

內部查詢:資料量較小的檔案可以一次性全部載入到記憶體中進行查詢

外部查詢:資料量較大的檔案無法一次性載入到記憶體中處理,需要使用輔助儲存器來分次處理

注意:我們根據在查詢過程中查詢的檔案是否改動,將查詢分為靜態查詢和動態查詢

順序查詢是一種線性查詢,最簡單的查詢方式。逐個遍歷,最壞的情況下,時間複雜度為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....