課程主要講了對多項式的優化,
給定乙個多項式p=a0+a1*x+a2*x^2+...+an*x^n;
正常解法:**如下
double f1(int n,double a,double x)
return p;
}從第一項開始一直到第n項;
優化後的解法:**如下
double f2(int n,double a,double x)
return p;
}每項提取乙個x
a0+x*(a1+x*(a2+...+x*(an-1+x*an)))
經過對演算法的優化後時間發生了指數級的減小;
源**:
#include
#include
#include
clock_t start,stop;
double duration;
#define maxn 10
#define maxk 1e7
double f1(int n,double a,double x)
return p;
}double f2(int n,double a,double x)
return p;
}int main()
//printf("%f ",k);
stop=clock();
duration=((double)((stop-start))/clk_tck)/maxk;
printf("ticks1=%f ",(double)(stop-start));
printf("duration=%6.2e\n",duration);
//函式2
start=clock();
for(i=0;i
//printf("%f ",k);
stop=clock();
duration=((double)((stop-start))/clk_tck)/maxk;
printf("ticks2=%f ",(double)(stop-start));
printf("duration=%6.2e\n",duration);
}這裡由於乙個函式跑起來非常快,所以讓函式進行迴圈,得出結果。
得出結論:解決問題方法的效率,跟演算法的巧妙程度有關。
關於clock 函式計時
clock tick 時鐘計時單元 而不把它叫做時鐘滴答次數 乙個時鐘計時單元的時間長短是由cpu控制的,乙個clock tick不是cpu的乙個時鐘週期,而是c c 的乙個基本計時單位。clock函式 clock t clock 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時...
C語言函式clock()
c語言函式clock 功 能 返回處理器呼叫某個程序或函式所花費的時間。用 法 clock t clock void 說明 clock t其實就是long,即長整形。該函式返回值是硬體滴答數,要換算成秒或者毫秒,需要除以 clk tck 或者 clk tck clocks per sec。比如,在v...
關於clock 函式計時
clock tick 時鐘計時單元 而不把它叫做時鐘滴答次數 乙個時鐘計時單元的時間長短是由cpu控制的,乙個clock tick不是cpu的乙個時鐘週期,而是c c 的乙個基本計時單位。clock函式 clock t clock 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時...