日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《数据结构与算法分析-C语言描述》习题2.6

發布時間:2025/3/11 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《数据结构与算法分析-C语言描述》习题2.6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
《數據結構與算法分析-C語言描述》([url=http://users.cis.fiu.edu/~weiss/#dsaac2e]Data Structures and Algorithm Analysis in C[/url])習題2.6
該題要求計算幾個循環的復雜度,并用程序計算出程序的執行時間。我在linux下的c程序如下:
/* exercise 2.6 in <data structures and algorithm in c>*/
#include <stdio.h>
#include <sys/time.h>
#include <math.h>

#define MAXINPUT 260
#define STEP (MAXINPUT/20)
#define ZOOMIN 100000000

int Fun1(int n)
{
int sum = 0;
int i;

for(i = 0; i < n; i++)
sum++;
return sum;
}
int Fun2(int n)
{
int sum = 0;
int i,j;

for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
sum++;

return sum;
}
int Fun3(int n)
{
int sum = 0;
int i,j;

for(i = 0; i < n; i++)
for(j = 0; j < n*n; j++)
sum++;
return sum;
}
int Fun4(int n)
{
int sum = 0;
int i,j;

for(i = 0; i < n; i++)
for(j = 0; j < i; j++)
sum++;
return sum;
}
int Fun5(int n)
{
int sum = 0;
int i,j,k;

for(i = 0; i < n; i++)
for(j = 0; j < i*i; j++)
for(k = 0; k < j; k++)
sum++;
return sum;
}
int Fun6(int n)
{
int sum = 0;
int i,j,k;

for(i = 0; i < n; i++)
for(j = 0; j < i*i; j++)
if(j%i == 0)
for(k = 0; k < j; k++)
sum++;
return sum;
}
int GetSpendTime(int (* f)(int ), int n)
{
struct timeval StartTimer,EndTimer;
double SpendTime;
double NPow3,NPow4,NPow5,NPow4LogN;

NPow3 = pow(n,3);
NPow4 = pow(n,4);
NPow5 = pow(n,5);
NPow4LogN = pow(n,4)*log(n);
gettimeofday(&StartTimer,NULL);
(*f)(n);
gettimeofday(&EndTimer,NULL);
SpendTime = EndTimer.tv_sec - StartTimer.tv_sec +(EndTimer.tv_usec - StartTimer.tv_usec)/1000000.0;
printf("N=%d,SpendTime=%.6f,T/N3=%.6f,T/N4=%.6f,T/N5=%.6f,T/N4logN=%.6f\n",
n,SpendTime,SpendTime*(ZOOMIN/NPow3),SpendTime*(ZOOMIN/NPow4),
SpendTime*(ZOOMIN/NPow5),SpendTime*(ZOOMIN/NPow4LogN));
return 0;
}

int main(void)
{
int i;
for(i = MAXINPUT/4; i < MAXINPUT; i+=STEP)
GetSpendTime(Fun5,i);
/* GetSpendTime(Fun5,20);*/
return 0;
}
輸出結果為:
N=65,SpendTime=0.497344,T/N3=181.099317,T/N4=2.786143,T/N5=0.042864,T/N4logN=0.667438
N=78,SpendTime=1.194641,T/N3=251.740800,T/N4=3.227446,T/N5=0.041378,T/N4logN=0.740799
N=91,SpendTime=2.600523,T/N3=345.093296,T/N4=3.792234,T/N5=0.041673,T/N4logN=0.840690
N=104,SpendTime=5.029540,T/N3=447.124275,T/N4=4.299272,T/N5=0.041339,T/N4logN=0.925691
N=117,SpendTime=9.153871,T/N3=571.540753,T/N4=4.884964,T/N5=0.041752,T/N4logN=1.025784
N=130,SpendTime=15.069480,T/N3=685.911698,T/N4=5.276244,T/N5=0.040586,T/N4logN=1.083966
N=143,SpendTime=24.084789,T/N3=823.634886,T/N4=5.759685,T/N5=0.040278,T/N4logN=1.160561
N=156,SpendTime=37.684631,T/N3=992.637029,T/N4=6.363058,T/N5=0.040789,T/N4logN=1.260047
N=169,SpendTime=55.917730,T/N3=1158.482343,T/N4=6.854925,T/N5=0.040562,T/N4logN=1.336269
N=182,SpendTime=82.133201,T/N3=1362.399844,T/N4=7.485713,T/N5=0.041130,T/N4logN=1.438452
N=195,SpendTime=115.332322,T/N3=1555.418291,T/N4=7.976504,T/N5=0.040905,T/N4logN=1.512707
N=208,SpendTime=159.712267,T/N3=1774.795297,T/N4=8.532670,T/N5=0.041022,T/N4logN=1.598615
N=221,SpendTime=217.001617,T/N3=2010.417005,T/N4=9.096910,T/N5=0.041162,T/N4logN=1.685186
N=234,SpendTime=337.556033,T/N3=2634.500602,T/N4=11.258550,T/N5=0.048113,T/N4logN=2.063774
N=247,SpendTime=408.777333,T/N3=2712.663639,T/N4=10.982444,T/N5=0.044463,T/N4logN=1.993405

此程序中計算第五個函數func5的運行時間,并將此時間分別除以(N^3),(N^4),(N^5)和(N^4*long(N))。因為N^5的值很大,而執行時間通常比較小,我又使用了一個放大系數ZOOMIN使得除法運算的結果不至于誤差太大。還需要注意的是,如果換成其他的函數,可以根據需要調節ZOOMIN和MAXINPUT的值,使得程序運行結果能更準確的反映該函數的算法執行復雜度。
從輸出結果來看,T/N5的值趨向于一個比較固定的數,所以func5應該是O(N^5)左右,這個算法可以用來驗證自己計算的算法復雜度是否正確。
可惜的是,上面的算法只能用于unix/linux下,windows下測量函數段的執行時間可以使用其他的方法,例如:[url]http://stackoverflow.com/questions/2215744/c-programming-how-can-i-get-execution-time-of-a-program-in-milliseconds[/url] 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的《数据结构与算法分析-C语言描述》习题2.6的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线精品一区二区三区 | 国产丝袜第一页 | asian性开放少妇pics | 色婷婷婷婷色 | 精品国产亚洲AV | 特级西西444www大精品视频免费看 | 国产人妖网站 | 国产毛片电影 | 国产少妇自拍 | 亚洲最大网站 | 97久草| 精品久久不卡 | 国产ts在线视频 | 超碰神马 | 亚洲天堂手机在线 | 亚洲精品国产精品乱码不99热 | 成人免费一区二区 | 日批网址 | 国产91在线免费 | 国产美女无遮挡永久免费观看 | 无码人妻aⅴ一区二区三区玉蒲团 | 色射视频| 少妇被粗大猛进进出出s小说 | 精品无码一级毛片免费 | 欧美亚洲日本一区 | 成人ay| 国产精品久久久久电影 | 美国一级黄色大片 | 在线免费观看黄色小视频 | 精品无码一区二区三区蜜臀 | 精品国模一区二区三区 | 日本免费一区二区三区四区五六区 | 一级一片免费看 | 中文字幕日韩三级片 | 免费观看黄色的网站 | 91精品国产色综合久久不卡98口 | 欧美日韩免费视频 | 毛片在线网站 | 伊人久久精品 | 国产成人综合一区二区三区 | 亚洲一一在线 | 国产 日韩 欧美 精品 | 久久亚洲网 | 日本东京热一区二区三区 | 日韩三级中文字幕 | 丰满人妻一区二区三区免费视频 | 久久av一区二区三 | 久久香蕉影视 | 三级福利视频 | 91精品国产aⅴ一区二区 | 国产黄色录相 | 婷婷激情丁香 | 国产sm调教一区二区 | 国产色视频一区二区三区qq号 | 色网站免费在线观看 | 久久久18禁一区二区三区精品 | 99国产热| 久久精品av | 真实乱视频国产免费观看 | 国产麻豆一区二区三区在线观看 | av资源导航 | 国产高清av在线 | 91色视频在线 | 鲁鲁狠狠狠7777一区二区 | 2024av视频 | 天天摸天天操天天爽 | 日韩福利电影在线 | 欧美手机在线 | 午夜激情福利电影 | 九九在线免费视频 | 一级影片在线观看 | 干极品美女 | 国产精品视频免费播放 | 国产精九九网站漫画 | av性色| 黄色成人在线免费观看 | 秋霞午夜影院 | av性色 | 69国产精品 | 亚洲动漫精品 | 妖精视频污 | 青草久久久 | 色播在线播放 | 欧美色老头old∨ideo | 久久免费激情视频 | 成人亚洲精品777777ww | 先锋资源在线视频 | 成人99视频 | 中文字幕永久视频 | 午夜影院在线观看 | 夜夜狠狠擅视频 | 亚洲黄色影视 | 亚洲三级黄色 | 日韩午夜 | 亚洲a视频在线 | 国产欧美一区二区视频 | 亚洲欧美日韩第一页 | 亚洲理论中文字幕 | 国产精品麻豆一区 |