查詢演算法中最直觀最容易理解的就是順序查詢了,思路比較簡單,就是在順序表(包括鍊錶)中按次序逐個比較,直到找到或者遍歷完線性表。關鍵點是順序遍歷。
def sequentialsearch(alist, item):
pos = 0
found = false
while pos < len(alist) and not found:
if alist[pos] == item:
found = true
else:
pos += 1
if found:
return pos
else:
return found
testlist = [1,2,32,8,17,19,42,13,0]
print(sequentialsearch(testlist, 3))
print(sequentialsearch(testlist, 13))
這是一般情況下的順序遍歷,如果能找到的情況下,最壞是比較n次,最好是比較1次,找不到的情況下,就是n次,時間複雜度就是o(n)。其實如果順序表示有序的話,其實可以進一步優化。即當如果 當前元素比要查詢的元素大時,那麼就沒必要繼續向下查詢了,因為後面的一定比當前元素大,一定不存在了。
def sequentialsearch(alist, item):
pos = 0
found = false
stop = false
while pos < len(alist) and not found and not stop:
if alist[pos] == item:
found = true
else:
if alist[pos] > item:
stop = true
else:
pos += 1
if found:
return pos
else:
return found
testlist = [0,1,2,8,13,17,19,32,42]
print(sequentialsearch(testlist, 3))
print(sequentialsearch(testlist, 13))
那麼這樣的話,能找到的情況下時間複雜度還是那樣,找不到的情況下(即不存在要查詢的元素),最好的就是比較1次,即第乙個元素就比要查詢的元素大,所以後面的元素一定比要查詢的元素大,肯定不存在要查詢的元素。 查詢演算法之順序查詢
演算法思想 順序查詢演算法是一種較為簡單的演算法,它把待查詢的所有序列元素都遍歷一遍,直到查詢到該關鍵字為止。時間複雜度最壞的情況下為o n 時間複雜度最好的情況下為o 1 順序查詢演算法實現 author qiu public class ordersearch 待查詢陣列 int key 8 待...
查詢演算法之順序查詢
對順序儲存的資料進行查詢,最簡單的演算法就是從頭開始,逐個檢查。若能夠在表中找到與給定關鍵字匹配的元素,則查詢成功,否則查詢失敗。這個演算法可以非常簡單的得以實現 typedef struct s eletype typedef struct s list int search s list lst...
查詢演算法之順序查詢
順序查詢又稱為線性查詢,查詢過程為 從陣列的第乙個位置 或最後乙個位置 開始,遍歷整個陣列,對下標索引對應的值與要查詢的值進行比較,如果相等,則查詢成功,返回下標值 如果遍歷完整個陣列,下標對應的值與要查詢的值都不等,則查詢不成功,返回 1。演算法實現 public int search seq i...