在程式設計中,我們如果要解決問題,就要涉及到演算法設計,演算法設計是最具創造性的工作之一,本人認為演算法設計是計算機工作之中最具活力的工作。
人們解決問題的思想方法步驟都有可以稱之為演算法演算法是指令的集合,是為了解決問題而進行的一系列的操作,他明確了可計算的過程,以乙個資料結合作為輸入,以乙個資料集合作為輸入,演算法通常來說有五個特性(輸入,輸出,可行性,有窮性,確定性)簡單的說演算法就是就是解決問題的過程在其中時間複雜性以及空間複雜性是是評價乙個演算法是否成功的最好標準,所謂的時間複雜性,並不是要計算出程式執行所需要的時間,因為執行的時間受好多因素的影響,例如 作業系統,計算機硬體等等,所以計算機執行的次數就是時間複雜性的標準。例如下面的程式:
public void selectstart(int[ ] a){
int n = a.length;
for(int k=0;k=n-1;k++)
{int min=k;
for(int i =k+1;iif (a[i]min=i;
if(k!=min){
int temp=a[k];
a[k]=a[min];
a[min]=temp;
在這個程式中有兩個迴圈,在第乙個迴圈中,每次迴圈就相當乙個包袱,每個包袱之中都包含著n-k-1
迴圈所以總共的迴圈次數為(
n-1)+(
n-2)
+..........+1
在第二次迴圈之中執行的交換語句之中
0~3(
n+1)執行的總次數為在你n(
n-1)/2到
n(n-1)
/2+3
(n-1
)之間
時間複雜度有三種表現方式,其中包括時間複雜度上界(o
),時間複雜度下界(ω),精確階(θ )。
當輸入大於乙個值是:∀n>=n,t(n)<=c.f(n)則t(
n)=of(
n)或者是t(
n)比上f(
n)的極限是乙個確定的值那麼時間複雜性上界為o(
n^2)時間複雜性下界為ω(n^2
)精確階為θ(n^2)
所謂的空間複雜性就是程式執行所需要的儲存空間,其中不包括執行示例所佔的空間。
菜鳥筆記之zTree(一)
獲取當前的樹 var treeobj fn.ztree.getztreeobj tree 獲取當前選中的結點集合 var nodes treeobj.getselectednodes 根據tid獲取選中的某個結點 因為就乙個,所以默 認選中陣列的第乙個 var node ztree.getnodeb...
菜鳥每天練習 之 遞迴演算法
遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫函式 或過程 來表示問題的解。遞迴過程一般通過函式或子過程來實現。遞迴演算法 在函式或子過程的內部,直接或者間接地呼叫自己的演算法。遞迴演算法解決問題的特點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞...
菜鳥學演算法之 樹結構
文章出處 作者 李少傑 一 樹的結構 現在通用的說法都是一棵倒著的樹,而我感覺這種結構更像樹根。二 邏輯結構 有兩種結構可以來表示樹 一種是陣列結構 另一種是鍊錶結構 三 不同儲存結構的比較 1.雙親結點指標結構。此結構就是上圖所示的結構,此結構最的問題就是不容易知道乙個結點的子結點數目,如果想知道...