高斯演算法 Java實現及效率對比

2021-09-03 01:53:58 字數 1477 閱讀 9734

高斯演算法:

計算1 + 2 + 3 + ... + n 時, 通過收尾相加, 然後乘以最大數/2的方式來實現

/**

* 高斯演算法

*/public class gaussalgorithm

long end1 = system.currenttimemillis();

system.out.println("normal sum = " + sum + ", case time" + (end1 - starttime));

/*高斯演算法, 當n為奇數時需要考慮中位數的問題

空間複雜度為 o(1)

*/long sum2 = (1 + n) * (n >> 1);

//如果n是奇數的話, 需要在計算結果上加上中位數

if((n & 1) == 1)

long end2 = system.currenttimemillis();

system.out.println("gauss sum = " + sum2 + ", case time" + (end2 - end1));

/*使用浮點計算, 不用考慮中位數的問題, 但在資料較大時,小數字會出現問題

*/double sum3 = (1 + n) * ((float)n / 2);

long end3 = system.currenttimemillis();

system.out.println("gauss sum = " + sum3 + ", case time" + (end3 - end2));

// n = 99999999l

// normal sum = 4999999950000000, case time50

// gauss sum = 4999999950000000, case time0

// gauss sum = 5.000000136282112e15, case time0

// n = 999999999

// normal sum = 499999999500000000, case time457 普通演算法

// gauss sum = 499999999500000000, case time0 高斯演算法

// gauss sum = 4.9999999215337472e17, case time0 使用浮點型資料在計算大數時會出現問題

// n = 9999999999l

// normal sum = 0 死掉,幾分鐘沒跑出來

// gauss sum = -5340232226128654848, case time0 超出範圍, 出現問題

// gauss sum = 5.000000100204387e19, case time0

}}

高斯消元演算法實現(Java)

1 選擇主元 即選擇對角元素,保證其為所在列的最大,避免大數除以小數出現溢位,其實是避免其值為0 2 當前主元不為最大值,交換兩行 3 判斷主元是否為0,若是則不是唯一解 4 逐行消元 5 對角線元素歸一化 6 回代消除對角線之上的元素。這個是主方法,主要是使用一維陣列實現,對應的方法引數要給出方程...

演算法及演算法效率

一 演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。二 演算法的特性 輸入輸出 演算法就有零個或多個輸入,演算法至少要有乙個或多個輸出 有窮性 在演算法執行有限的步驟後,自動結束而不是出現無限迴圈,並且每乙個步驟在可接受範圍內完成。確...

Mat 讀取資料 及效率對比

1 mat mat 2 mat mat int rows,int cols,int type 3 mat mat size size,int type 4 mat mat int rows,int cols,int type,constscalar s 5 mat mat size size,int...