時間複雜度 關於搜尋

2022-04-10 13:12:26 字數 658 閱讀 4372

如果我們想要在陣列找到我想要的元素應該怎麼辦呢??

def s1(a,l1):

l2=for i in l1:

if a == i:

return l2

這種遍歷的方法就行 複雜度是 o(len(l1)) 我們沒次都是會做最壞打算的所有遍歷是必須的

這種方法實在是太慢,難道沒有更好的方法嗎?

答案就是二分法(當然是有序陣列)

我們可以把陣列中間的元素和我們要找的元素比較,然後如果中間的元素比較大 那麼就把前面一段陣列重複這個操作

我們可以想象一下,每次重複操作範圍都會除以2 那麼這個演算法肯定是對數級別的

def

serch1(a,l1):

su =len(l1)

if su < 2:

return

false

item = su/2if a l1 =l1[:item]

return

serch1(a,l1)

if a >l1[item]:

l1 =l1[item:]

return

serch1(a,l1)

if a ==l1[item]:

return item

see 這個邏輯是不是很清晰 

關於時間複雜度

1.演算法複雜度分為 時間複雜度和空間複雜度。作用 時間複雜度是度量演算法執行的時間長短 而空間複雜度是度量演算法所需儲存空間的大小。2.一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f n 因此,演算法的時間複雜度記做 t n o f n 分析 隨著模組n的增大,演算法執行的時間的...

關於時間複雜度

關於時間複雜度 o 的定義 若f n 是正整數n的乙個函式,則o f n 表示 m 0 使得當n n0時,f n m f n0 表示時間複雜度的階有 o 1 常量時間階 o n 線性時間階 o n 對數時間階 o n n 線性對數時間階 o n k k 2,k次方時間階 例 兩個n階方陣的乘法 fo...

關於時間複雜度和空間複雜度

如何判別乙個演算法的好壞 首先,這個演算法必須是正確的 其次,好的演算法應具有幸福感,便於人們理解和交流,並且是機器可執行的。這個演算法還需要足夠健壯,即當輸入的資料非法或不合理時,也能適當的做出正確的反應或進行相應的處理 最後它還必須擁有高效率和低儲存量要求。也就是時間複雜度和空間複雜度佔的地方越...