[問題] 取平均-[兩兩除二] 與 [加總除]

看板C_and_CPP作者 (Charlott.HonG)時間7年前 (2016/09/10 13:23), 7年前編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
[兩兩除二][加總除]兩者效能上有影響嗎~ 或者有更好的方法嗎~ 看過除法好像很耗費資源 兩兩相除會因為做太多次而影響效能嗎? 感覺上未知之後是否輸入會變大或變多 (避免到時候益位)兩兩相除是比較好的做法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.147.79 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1473485023.A.3D4.html ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 13:31:27

09/10 13:41, , 1F
你怕 32-bit integer 溢位就用 64-bit interger 免煩惱
09/10 13:41, 1F

09/10 13:41, , 2F
什麼叫兩兩除二我是聽不懂,但你確定這方法正確嗎?
09/10 13:41, 2F

09/10 13:42, , 3F
答案不正確就不必談效能啦~
09/10 13:42, 3F
痾 表達不完整,等我一下寫個範例~ ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 13:51:34 阿~傻了QQ 實際做了發現沒這麼簡單 這樣會做太多次,想錯了 #include <iostream> using namespace std; int main(int argc, char const *argv[]){ double arr[]={4,5,6}; cout << "avg=" << (arr[0]+arr[1]+arr[2])/3 << endl; double temp1,temp2; temp1=(arr[0]+arr[1])/2; temp2=(arr[1]+arr[2])/2; cout << "avg=" << (temp1+temp2)/2 << endl; return 0; }

09/10 13:59, , 4F
兩兩除二的話如果只有奇數個資料怎麼辦啊?
09/10 13:59, 4F

09/10 13:59, , 5F
加總怕溢位只要確定你的資料不會是負的就unsigned long long
09/10 13:59, 5F

09/10 13:59, , 6F
給他開下去啊
09/10 13:59, 6F
了解,一時也沒想到還有long long long ※ 編輯: hunandy14 (218.173.147.79), 09/10/2016 14:09:53

09/10 14:22, , 7F
先不說奇數,六個和十個也沒辦法啊
09/10 14:22, 7F

09/10 14:28, , 8F
long long 如果還不夠,你還可以用 GNU MP XDDDD
09/10 14:28, 8F

09/10 15:01, , 9F
boost::multiprecision
09/10 15:01, 9F

09/11 22:23, , 10F
避免加法溢位 可以用疊代 M_{n-1}+(x_n-M_{n-1})/n=M_n
09/11 22:23, 10F

09/11 22:24, , 11F
M_n代表連續n個的平均
09/11 22:24, 11F

09/13 00:34, , 12F
C n取m當系數 改演算法走一次資料就收工了
09/13 00:34, 12F
文章代碼(AID): #1NqvZVFK (C_and_CPP)