演算法設計 簡單線性查詢

2021-09-04 02:31:43 字數 1114 閱讀 5980

查詢就是在集合中尋找特定值的過程,線性查詢是查詢演算法中最簡單的演算法,下面介紹原理。

我們假設有一張寫滿數字的紙,沒有特定的順序,當要確定數字13是否在這些數字中時,我們會怎麼做?我們可能會從頭到尾的看這些數字,並將每個數字和13進行比較,當在這個過程中發現13的時候,退出並顯示找到了它;如果最後沒有發現13,就顯示13並不在其中。這個策略就叫做「先行查詢」,也就是逐個查詢資料項列表,直到找到目標值。簡單**如下:

def search(x,nums):

for i in range(len(nums)):

if nums[i]==x: #item found, return the index value

return i

return -1 #loop finished, item was not in list

這種方法對於資料量不是很大的列表來說還可以,但對於資料量很大的還有 更好的方法。下面介紹一下二分查詢。

二分查詢的思想也很簡單,就像猜數字遊戲,選擇1~100之間的數字,每次猜測告訴結果是否正確、猜的過高還是過低。我們可以先猜測50,如果數字更高,則可能範圍是50~100.下乙個猜測邏輯就是75,每次我們猜測剩下數字的中間值,嘗試縮小可能的範圍。這個策略就是二分查詢。二分指的是兩個,在每個步驟中,我們將剩餘的數字分為兩個部分。二分查詢適用於查詢有序列表。基本思想是用兩個變數來跟隨資料項列表範圍的端點,最初將變數low和high分別設定為列表的第乙個和最後乙個位置。演算法的核心是乙個迴圈,檢視剩餘範圍中間的資料項,將它與x進行比較。如果x小於中間資料項,則移動high,這樣就能查詢縮小到下半部分;如果x較大,則我們移動low。當找到x或不再有更多的地方(low>high)時ii,迴圈終止。**如下:

def search(x,nums):

low=0

high=len(nums)-1

while low<=high:

mid=(low+high)//2

item=nums[mid]

if x==item:

return mid

elif xhigh=mid-1

else:

low=mid+1

return -1

簡單線性回歸演算法

一 目標 尋找一條直線,最大程度的 擬合 樣本特徵和樣本輸出標記之間的關係。在回歸問題中我們 的是乙個具體的數值,這個具體的數值是在乙個連續的空間裡的,如果想看兩個特徵的回歸問題就需要在三維空間裡進行觀察。樣本特徵有多個的回歸稱為多元線性回歸 損失函式 對a求偏導數 最後得到的結果 求a b的pyt...

簡單線性回歸

真實值 y theta x varepsilon 值 hat theta x varepsilon 為誤差 項,服從 均值為0 方差為 為誤差項,服從均值為0,方差為 為誤差項,服 從均值為 0,方差 為 sigma 的高斯分布。已知若干樣本,可以得到若干 varepsilon 值,根 據極大似 然...

簡單線性回歸

資料預處理 data student data 1 刪除缺失值 lm data na.omit data 散點圖 plot height,weight,data data,main scatter plot col 1,pch col為顏色,pch為形狀 箱線圖 boxplot height wei...