一般的fibonacci演算法:
int fibonacci(intnumber)
該演算法的時間複雜度達到了驚人的指數級別,效率慢的不行,下面提供兩種不同的改進方式,時間複雜度分別為o(n)和o(logn)。
方法一:o(n)
int fibonacci(intnumber)
;
int result = 0
;
for (int index = 2; index <= number; ++index)
return
result;
}
將原本的自頂向下計算的方式,改為自底向上,消除原本過多的冗餘計算,來降低時間複雜度。
方法二:o(logn)
資料結構:
structmatrix2by2
public
:
intm_00;
intm_01;
intm_10;
intm_11;
};matrix2by2 matrixmultiply(
const matrix2by2& matrix1, const matrix2by2&matrix2)
遞迴方式:
matrix2by2 matrixpower(matrix2by2 matrix, intexponent)
else
}int fibonacci(int
number)
非遞迴方式:
int fibonacci(intnumber)
matrix =matrixmultiply(matrix, matrix);
exponent = exponent >> 1
; }
return
result.m_00;
}
利用了 =n-1的性質,實際上就是2階矩陣(a11 = 1, a12 = 1, a21 = 1, a22 = 0)的n-1次冪,fibonacci(n)為該矩陣n-1次冪的a11。
JVM效能調優(一般)
鏈結 監控cpu 監控記憶體 發現發生full gc 可能存在大物件,案例 用乙個物件統計老師發表的 如果乙個老師發表很多,可能造成這個物件很大,大物件直接進入老年代,如果堆記憶體很大,full gc時間就很長。部署多個web容器,減少單個web容器的堆記憶體。場景 簡單抓取系統,抓取 上的一些資料...
SQL 調優一般思路
一般來說,調優的第一手資料中,如何根據報告來判斷是哪些sql消耗了最多的系統資源?哪些sql是最需要調整的呢?這裡給出了乙個大致的優化思路。一般來說,需要關注下面四種top sql 我們知道,乙個語句的響應時間有個很著名的公式 響應時間 服務時間 等待時間 其中服務時間就是cpu為執行該語句花費的時...
TensorFlow演算法一般流程
匯入 生成要本資料集 轉換和歸一化資料 data tf.nn.batch norm with global normalization 劃分訓練集 測試集 驗證集 設定超引數,一次性初始化 初始化和佔位 定義模型結構 y pred tf.add tf.mul x input,weight matri...