查詢演算法之順序查詢Python

2021-10-24 03:58:22 字數 1291 閱讀 7302

查詢演算法中最直觀最容易理解的就是順序查詢了,思路比較簡單,就是在順序表(包括鍊錶)中按次序逐個比較,直到找到或者遍歷完線性表。關鍵點是順序遍歷。

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...