1 演算法簡介

2022-08-23 01:39:12 字數 1802 閱讀 4614

1.1 更佳的查詢方式

二分查詢是一種演算法,其輸入是乙個有序的元素列表。如果要查詢的元素包含在列表中,二分查詢返回其位置,否則返回null。

一般而言,對於包含 n 個元素的列表,用二分查詢最多需

步,而簡單查詢最多需要

步。僅當列表是有序的時候,二分查詢才管用。

**清單1-1 二分查詢

#

-*- coding: utf-8 -*-

defbinary_search(list1, item):

#(以下2行)low和high用於跟蹤要在其中查詢的列表部分

low =0

high = len(list1)-1

#只要範圍沒有縮小到只包含乙個元素,

while low <=high:

#就檢查中間的元素

mid = (low + high) / 2guess =list1[mid]

#找到了元素

if guess ==item:

return

mid

#猜的數字大了

if guess >item:

high = mid - 1

#猜的數字小了

else

: low = mid + 1

#沒有指定的元素

return

none

my_list = [1, 3, 5, 7, 9]

#=> 1,別忘了索引從0開始,第二個位置的索引為1

print binary_search(my_list, 3)

#=> none,在python中,none表示空,它意味著沒有找到指定的元素

print binary_search(my_list, -1)

1.2 執行時間

一般而言,應選擇效率最高的演算法,以最大限度地減少執行時間或占用空間。

線性時間(linear time):最多需要猜測的次數與列表長度相同。

對數時間(log時間):二分 查詢的時間為對數時間。

1.3 大o表示法

大o表示法是一種特殊的表示法,指出了演算法的速度有多快。

隨著元素數量的增加,二分查詢需要的額外時間並不多,而簡單查詢的額外時間卻很多。因此,隨著列表的增長,二分查詢的速度比簡單查詢快得多。

大o表示法指出了演算法有多快。例如,假設列表包含n個元素。簡單查詢需要檢查每個元素,因此需要執行 n 次操作。使用大o表示法,這個執行時間為

。二分查詢需要執行

,使用大o表示法,這個執行時間為

。大o表示法讓你能比較運算元,它指出了演算法執行時間的增速。

1.4 一些常見的大o執行時間

,也叫對數時間,這樣的演算法包括二分查詢。

,也叫線性時間,這樣的演算法包括簡單查詢。

,這樣的演算法包括快速排序——一種速度較快的排序演算法。

,這樣的演算法包括選擇排序——一種速度較慢的排序演算法。

,這樣的演算法包括旅行商問題的解決方案——一種非常慢的演算法。

1.5 旅行商

有一位旅行商,他需要前往5個城市。這位旅行商要前往5個城市,同時要確保旅程最短。為此,可考慮前往這些城市的各種可能順序。對於每種順序,他都計算總旅程,再挑選出旅程最短的路線。5個城市有5!=5*4*3*2*1=120中不同的排列方式。因此,在涉及5個城市時,解決這個問題需要執行120次操作。

推而廣之,涉及n個城市時,需要執行n!(n的階乘)次操作才能計算出結果。因此執行時間為

,即階乘時間。

演算法學習筆記1 演算法簡介

1.1演算法是一組完成任務的指令,任何 片段都可視為 1.2二分查詢 在乙個有序的元素列表 必須有序 如果要查詢的元素包含在列表中,則返回其位置 否則返回null。工作原理 每次都從列表的中間進行查詢,每次都排除一半的數字。例 在1 100中找到乙個我想的數。從50開始,小了,就找50 100之間的...

粒子群演算法 1 粒子群演算法簡介

粒子群演算法簡介 一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 ...

粒子群演算法 1 粒子群演算法簡介

原文 粒子群演算法簡介 一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的...