1. 程式人生 > 其它 >演算法學習之二——查詢

演算法學習之二——查詢

查詢:在一些元素中,通過一定的方法找出與給定關鍵字相同的資料元素的過程。

列表查詢(線性表查詢):從列表中查詢指定元素

輸入:列表、待查詢元素
輸出:元素下表(未找到元素時一般返回None或-1)
內建列表查詢函式:index()

順序查詢(Linear Search)

順序查詢:也叫線性查詢,從列表第一個元素開始,順序進行搜尋,直到找到元素或搜尋到列表最後一個元素為止。

程式碼:

def linear_search(data_set,value):
	for i in range(range(data_set)):
		if data_set[i]==value:
			return i
	return
時間複雜度:O(n)

二分查詢(Binary Search)

又叫折半查詢,從有序列表的初始候選去li[0:n]開始,通過對待查詢的值與候選區中間值的比較,可以使候選區減少一半。

程式碼:

def bin_search(data_set,value):
	low=0
	high=len(data_set)-1
	while low<=high:
		mid(low+high)//2
		if data_set[mid]==value:
			return mid
		elif data_set[mid]>value:
			high=mid-1
		else:
			low=mid+1
	
時間複雜度:O(logn)