原创 算法導論第二章 2.1

算法導論第二章 2.1 插入排序 1-1 首先,31是作爲已經拿到左手上的牌 j = 2,即我們開始再桌面上摸牌41,且我們左手最多有A.length = n張牌 key獲取當前牌的數據 while語句開始循環,並和左手已經排好

原创 算法導論第二章 思考題

算法導論第二章 思考題 2-1 證明: 已知插入排序的最壞情況運行時間爲Θ(n2)Θ(n^{2})Θ(n2),且我們使用插入排序來排序長度爲kkk的n/kn/kn/k個子表。 長度爲kkk的一個子數組,用插入排序其最壞情況運行

原创 算法導論第二章 2.2

2.2 分析算法 2-1   Θ(n³)Θ(n³)Θ(n³) 2-2 Selection-Sort(A) 1 for i = 1 to A.length - 1 2 Subscript = i

原创 Ubuntu下編譯程序(動態鏈接,靜態鏈接,動態加載)

Ubuntu下編譯程序(動態鏈接,靜態鏈接,動態加載) 以下爲C++程序作爲示例: Code.hCode.hCode.h #ifndef CODE_H #define CODE_H int add(int, int); #en

原创 用遞歸樹方法求解遞歸式

用遞歸樹方法求解遞歸式 [備註:需要修改] 一個遞歸算法的遞歸式:T(n)=3T(n/4)+cn2T\left(n\right)=3T\left(n/4\right)+cn^2T(n)=3T(n/4)+cn2 我們先來了解一下這個

原创 算法導論第二章 2.3

算法導論第二章 2.3 設計算法 3-1 首先傳遞數組A和範圍下標p=1p = 1p=1,r=8r = 8r=8(假設下標數組從1開始)到MERGE-SORT函數 判斷ppp是否小於rrr,也就是判斷數組AAA中的元素個數,如果

原创 最大子數組問題(線性算法)

最大子數組問題(線性算法) 時間算法度:Θ(n)Θ\left(n\right)Θ(n) 該算法主旨: 個人理解: 該算法主旨再於,用一個DataDataData類數組來存儲序列0..n0..n0..n的所有元素的和,然後進行比較

原创 算法導論第四章 4.1

算法導論第四章 4.1 最大子數組問題 1-1 返回數組中最大的元素 1-2 FIND-MAXIMUM-SUBARRAY(A, low, high) 1 Subscript_Low = low 2 Subscript_

原创 記錄一下Ubuntu下Makefile多文件編譯

記錄一下Ubuntu下Makefile多文件編譯 以下內容參考自:LinuxLinuxLinux網絡編程(第222版) 和 https://seisman.github.io/how-to-write-makefile/overv

原创 二分查找法

二分查找法 時間算法度:Θ(lgn)Θ(lgn)Θ(lgn) 該算法主旨: 每次循環/遞歸迭代查找,都將序列分成兩半,再根據判斷選擇下一個將要分成兩半的子序列。直到找到我們需要的數字,或沒有找到則返回−1-1−1。 僞代碼: