演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。
1 輸入輸出:演算法具有零個或者多個輸入,至少有乙個或者多個輸出。
2 有窮性: 指演算法在執行完有限的步驟之後,自動結束而不會出現無線玄幻,並且每個步驟都在可接受的時間內完成。
3 確定性:演算法的每乙個步驟都有確定的含義。
4 可行性:演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成。
1 正確性:演算法的正確性是指演算法至少應該有輸入、輸出、和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。
4 時間效率高和儲存量低
1 定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況來確定t(n)的數量級。演算法的時間複雜度,記作:t(n)=o(f(n))。它表示隨時間規模n的增大,演算法執行的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間負責度。
2 推到大o階方法
1 用常數1取代執行時間中的所有加法常數。
2 在修改後的執行次數函式中,只保留最高端項。
3 如果最高端存存在且不是1,則去除與這個項相乘的常數,得到的結果就是大o階。
3 常數階:o(1)
int sum = 0, n=100;
sum=(1+n)*n/2;
printf("%d",sum)
4 線性階:o(n)
int n=100,sum=0;
for(i=0;i5 對數階:o(logn)
int count=1;
int n=10000;
while(count6 平方階:o(
int i ,j;
for(i=0;i7常見的時間複雜度:
執行次數
階非正式術語
12o(1)
常數階2n+3
o(n)
線性階o(
平方階5logn+20
o(logn)
對數階級
2n+3nlogn+19
o(nlogn)
nlogn階
o()指數階8 演算法空間複雜度
演算法的空間複雜度通過計算演算法所需要的儲存空間實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n)),其中n為問題的規模。
大話資料結構學習筆記(二)
測定執行時間最可靠的方法就是計算對執行時間有消耗的基本操作的執行次數。在評定演算法的優劣時,與最高次項相乘的常數並不重要,而與最高端項的階數有關。演算法時間複雜度 大o記法。o 1 常數階,o n 線性階,o n 2 平方階。推導大o階 1.用常數1取代執行時間中的所有加法常數 2.在修改後的執行次...
大話資料結構學習筆記(二)
演算法 algorithm 是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法五個基本特性 輸入 輸出 有窮性 確定性和可行性。1 輸入輸出 演算法具有零個或多個輸入,乙個或多個輸出。2 有窮性 指演算法在執行有限的步驟之後,自動結束而不會出現無限迴...
《大話資料結構》 學習筆記1
第一章 資料結構緒論 經典 if you give someone a program you will frustrate them for a day if you teach tem how to program,you will frustrate them for a lifetim.如果...