例1求下面程式的時間複雜度。
int f1(int n)
解當i=1時,對x的賦值語句執行1次。
當i=2時,對x的賦值語句執行1+2次。
當i=n時,對x的賦值語句執行1+2+…+n次。
所以,對x的賦值語句共執行1+(1+2)+(1+2+3)+ …+(1+2+…+n)=n(n+1)(n+2)/6次。故該程式的時間複雜度為o(n3)。
例2設n是偶數,求執行下列程式後m的值,並給出該程式的時間複雜度。
int f2(int n)
解m的值等於賦值語句m=m+1的執行次數。
當i=1時,對m的賦值語句執行n-1次。
當i=2時,對m的賦值語句執行n-3次。
當i=n/2時,對m的賦值語句執行1次。
所以,對m的賦值語句共執行(n-1)+(n-3)+…+1=n2/4次,即有m=n2/4。故該程式的時間複雜度為o(n2)。
例3求下面程式段的時間複雜度:
int f3(int n)
a[i]=1;
}
其中,陣列a中各分量的元素值要麼為0,要麼為1。
解在最好情況下,即二進位制數的最後一位為零時,演算法只進行一次判斷,未執行迴圈體,賦值語句a[i]執行了一次;最壞情況出現在二進位制各位均為1(最高位為0,因題目設無溢位)時,這時迴圈體執行了n-1次,時間複雜度是o(n),迴圈體平均執行n/2次,平均時間複雜度仍是o(n)。
C語言版資料結構演算法
c語言版資料結構演算法 c語言資料結構具體演算法 c語言資料結構演示軟體 演算法效率分析 線性表 棧和佇列 串 陣列和廣義表 樹和二叉樹 圖 查表 排序 動態儲存管理 上面兩個鏈結就是 資料結構 c語言版 嚴蔚敏教授嚴奶奶的書籍配套軟體 她的書看著很枯燥乏味,但真的非常嚴謹,嚴奶奶也很貼心的做了乙個...
資料結構與演算法(C語言版) 棧
棧是一種常用的資料結構,棧常用在系統軟體和或者演算法中。棧使用陣列來做順序棧,鏈式站用鍊錶來做。今天使用動態陣列來設計棧。棧,後進先出 lifo 先進後出 filo push,進棧 pop,出棧 peek,看一下棧頂 我使用的是vs ultimate2013 新建乙個空專案,在標頭檔案裡面新增兩個標...
資料結構(C語言版)
用棧實現數字的進製轉換 10轉8 棧 限定只能在表尾進行插入或者刪除操作的線性表 特點 先進後出 儲存表示方法 順序棧和鏈棧 本文用的順序棧 實現 readonly name code class c include include define stack init size 100 儲存空間初始...