分治法類似於二叉樹法,將乙個大問題,分成兩個小問題解決。由於子問題與母問題有相同的屬性,也就是一類問題,分步解決問題。這裡用歸併排序舉例。
如果不用分治法,a1與a2到an每個數比較,進行n-1次,a2進行n-2次,總次數為(n-1+1)*(n-1)=n^2-n一般排序為o(n^2),時間複雜度較高。
採用分治法,使子物件的元素個數為母物件的二分之一,問題變成了兩個。然後,再次進行分治,共計分治log2(n),也就是共計大步驟次數為log2(n),每步共計比較n/2次。總次數log2(n)*n/2,時間複雜度為o(logn*n)。
分治法,是將大資料分成小資料,按步驟求出最優解。小資料處理便每個子問題為n*n/4次運算,增加兩倍子問題,從而計算量減少n*n/2次,由此反覆,總計算量為n*log2(n)。
關於時間複雜度
1.演算法複雜度分為 時間複雜度和空間複雜度。作用 時間複雜度是度量演算法執行的時間長短 而空間複雜度是度量演算法所需儲存空間的大小。2.一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f n 因此,演算法的時間複雜度記做 t n o f n 分析 隨著模組n的增大,演算法執行的時間的...
關於時間複雜度
關於時間複雜度 o 的定義 若f n 是正整數n的乙個函式,則o f n 表示 m 0 使得當n n0時,f n m f n0 表示時間複雜度的階有 o 1 常量時間階 o n 線性時間階 o n 對數時間階 o n n 線性對數時間階 o n k k 2,k次方時間階 例 兩個n階方陣的乘法 fo...
關於時間複雜度和空間複雜度
如何判別乙個演算法的好壞 首先,這個演算法必須是正確的 其次,好的演算法應具有幸福感,便於人們理解和交流,並且是機器可執行的。這個演算法還需要足夠健壯,即當輸入的資料非法或不合理時,也能適當的做出正確的反應或進行相應的處理 最後它還必須擁有高效率和低儲存量要求。也就是時間複雜度和空間複雜度佔的地方越...