演算法的概念
演算法是計算機處理資訊的本質,因為電腦程式本質上是乙個演算法來告訴計算機確切的步驟來執行乙個指定的任務,一般地,當演算法在處理資訊時,會從輸入裝置或資料的儲存位址讀取資料,把結果寫入輸出裝置或某個儲存位址以後再呼叫。
演算法是獨立存在的一種解決問題的方法和思想。
演算法的五大特性:
1.輸入:演算法具有0個或多個輸入
2.輸出:演算法至少有1個或多個輸出
3.有窮性:演算法在有限的步驟之後會自動結束而不會無限迴圈,並且每乙個步驟可以在可接受的時間內完成
4.確定性:演算法中的每一步都有確定的含義,不會出現二義性
5.可行性:演算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成。
例題:如果a+b+c =1000,且a^2+b^2+c^2(a,b,c為自然數),如何求出所有a,b,c可能的組合?
方法1:列舉法(效率很低)
for a in range(0,1001):for b in range(0,1001):
for c in range(0,1001):
if a+b+c == 1000 and a**2+b**2 == c**2:
print("
a,b,c:%d,%d,%d
"%(a,b,c))
方法2:改進:
for a in range(0,1001):for b in range(0,1001):
c = 1000-a-b
if a**2+b**2 == c**2:
print("
a,b,c:%d,%d,%d
"%(a,b,c))
執行結果:
a,b,c:0,500,500
a,b,c:200,375,425
a,b,c:375,200,425
a,b,c:500,0,500
演算法導論10 1
本小節介紹了棧和佇列,其實總結起來就兩句話 棧 先入後出 佇列 先入先出 但是在介紹佇列的時候,講到了一種如同銜尾蛇一樣的定長佇列,和apache的circularfifoqueue實現是一致的。仿照圖 10 1 畫圖表示一次執行操作 push s,4 push s,1 push s,3 pop s...
python資料結構 演算法引入
如果 a b c 1000,且 a 2 b 2 c 2 a,b,c 為自然數 如何求出所有a b c可能的組合?import time start time time.time for a in range 0,1001 for b in range 0,1001 c 1000 a b if a b...
演算法的引入及簡單介紹
舉乙個可能不太恰當的例子 如果將最終寫好執行的程式比作戰場,我們碼農便是指揮作戰的將軍,而我們所寫的 便是士兵和 那麼資料結構和演算法是什麼?答曰 兵法!我們可以不看兵法在戰場上肉搏,如此,可能會勝利,可能會失敗。即使勝利,可能也會付出巨大的代價。我們寫程式亦然 沒有看過資料結構和演算法,有時面對問...