




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
希望對(duì)大家有所幫助,多謝您的瀏覽!昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告(2011—2012學(xué)年第1學(xué)期)課程名稱:算法設(shè)計(jì)與分析開(kāi)課實(shí)驗(yàn)室:信自樓機(jī)房4442011年10月12日年級(jí)、專業(yè)、班計(jì)科092學(xué)號(hào)200910405214姓名徐興繁成績(jī)實(shí)驗(yàn)項(xiàng)目名稱求最大公約數(shù)指導(dǎo)教師吳晟教師評(píng)語(yǔ)該同學(xué)是否了解實(shí)驗(yàn)原理: A.了解口 B.基本了解口C.不了解口該同學(xué)的實(shí)驗(yàn)?zāi)芰Γ?A.強(qiáng)口 B.中等 口 C.差 口該同學(xué)的實(shí)驗(yàn)是否達(dá)到要求:A.達(dá)到口 B.基本達(dá)到口C.未達(dá)到口實(shí)驗(yàn)報(bào)告是否規(guī)范: A.規(guī)范口 B.基本規(guī)范口C.不規(guī)范口實(shí)驗(yàn)過(guò)程是否詳細(xì)記錄: A.詳細(xì)口 B.一般口 C.沒(méi)有口教師簽名:年 月 日一、上機(jī)目的及內(nèi)容上機(jī)內(nèi)容求兩個(gè)自然數(shù)m和n的最大公約數(shù)。上機(jī)目的(1) 復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)課程的相關(guān)知識(shí),實(shí)現(xiàn)課程間的平滑過(guò)渡;(2) 掌握并應(yīng)用算法的數(shù)學(xué)分析和后驗(yàn)分析方法;(3) 理解這樣一個(gè)觀點(diǎn):不同的算法能夠解決相同的問(wèn)題,這些算法的解題思路不同,復(fù)雜程度不同,解題效率也不同。二、實(shí)驗(yàn)原理及基本技術(shù)路線圖(方框原理圖或程序流程圖)(1)至少設(shè)計(jì)出三個(gè)版本的求最大公約數(shù)算法;(2) 對(duì)所設(shè)計(jì)的算法采用大0符號(hào)進(jìn)行時(shí)間復(fù)雜性分析;(3) 上機(jī)實(shí)現(xiàn)算法,并用計(jì)數(shù)法和計(jì)時(shí)法分別測(cè)算算法的運(yùn)行時(shí)間(4) 通過(guò)分析對(duì)比,得出自己的結(jié)論。三、 所用儀器、材料(設(shè)備名稱、型號(hào)、規(guī)格等或使用軟件)1臺(tái)PC及VISUALC++6.0軟件四、 實(shí)驗(yàn)方法、步驟(或:程序代碼或操作過(guò)程)希望對(duì)大家有所幫助,多謝您的瀏覽!實(shí)驗(yàn)采用三種方法求最大公約數(shù)1、連續(xù)整數(shù)檢測(cè)法。2、歐幾里得算法3、分解質(zhì)因數(shù)算法根據(jù)實(shí)現(xiàn)提示寫(xiě)代碼并分析代碼的時(shí)間復(fù)雜度:方法一:intf1(intm,intn){intt;if(m>n)t=n;elset=m;while(t){if(m%t==0&&n%t==0)break;elset=t-1;}returnt;}根據(jù)代碼考慮最壞情況他們的最大公約數(shù)是1,循環(huán)做了t-1次,最好情況是只做了1次,可以得出0(n)=n/2;方法二:intf2(intm,intn){intr;r=m%n;while(r!=0){m=n;n=r;r=m%n;}returnn;}根據(jù)代碼輾轉(zhuǎn)相除得到歐幾里得的0(n)=logn方法三:intf3(intm,intn){inti=2,j=0,h=0;inta[N],b[N],c[N];while(i<n)if(n%i==0){j++;a[j]=i;n=n/i;}elsei++;}j++;a[j]=n;i=1;intu;u=j;while(i<=j){//printf("%d",a[i]);i++;}i=2;j=0;while(i<m){if(m%i==0){j++;b[j]=i;m=m/i;}elsei++;}j++;b[j]=m;i=1;while(i<=j){//printf("%d",b[i]);i++;}intk=1;for(i=1;i<=j;i++){for(k=1;k<=u;k++){if(b[i]==a[k]){h++;c[h]=a[k];//printf("%d",c[h]);a[k]=a[k+1];break;}}}k=1;while(h>1){k=k*c[h]*c[h-1];h=h-2;}if(h==1){k=k*c[1];returnk;}elsereturnk;}根據(jù)代碼分解質(zhì)因子算法0(n)=n2+n/2為了計(jì)算每種算法運(yùn)行的次數(shù)所用的時(shí)間,我將代碼稍加改動(dòng)添加代碼如下其中計(jì)數(shù)器采用的是沒(méi)做一次循環(huán)就加1;計(jì)時(shí)器是記住開(kāi)始時(shí)間和結(jié)束時(shí)間,用結(jié)束時(shí)間減開(kāi)始時(shí)間。#include"iostream.h"#include"stdio.h"#include"stdlib.h"#include"time.h"#defineN100intw,w2,w3;//用于計(jì)數(shù)intf1(intm,intn){intt;if(m>n)t=n;elset=m;while(t){if(m%t==0&&n%t==0)break;elset=t-1;w++;}returnt;}intf2(intm,intn){intr;r=m%n;w2=1;while(r!=0){m=n;n=r;r=m%n;w2++;returnn;intf3(intm,intn){inti=2,j=0,h=0;inta[N],b[N],c[N];while(i<n){if(n%i==0){j++;a[j]=i;n=n/i;w3++;}else{i++;w3++;}}j++;a[j]=n;i=1;intu;u=j;while(i<=j){//printf("%d",a[i]);i++;w3++;}//printf("\n");i=2;j=0;while(i<m){if(m%i==0){j++;b[j]=i;m=m/i;w3++;elsew3++;}}j++;b[j]=m;i=1;while(i<=j){//printf("%d",b[i]);i++;w3++;}intk=1;for(i=1;i<=j;i++){for(k=1;k<=u;k++){if(b[i]==a[k]){w3++;希望對(duì)大家有所幫助,多謝您的瀏覽!h++;c[h]=a[k];//printf("\n%d",c[h]);a[k]=a[k+1];break;}}}k=1;while(h>1){k=k*c[h]*c[h-1];h=h-2;w3++;}if(h==1){k=k*c[1];returnk;}elsereturnk;intmain(void)intm,n;printf(“ 請(qǐng)輸入m,n:\n");scanf("%d%d",&m,&n);intk;k=f1(m,n);printf("方法一最大公約數(shù)為:%d\n",k);k=f2(m,n);printf(" 方法二最大公約數(shù)為:%d\n",k);k=f3(m,n);printf(" 方法三最大公約數(shù)為:%d\n",k);printf("\n \n");printf("\n計(jì)數(shù)器顯示結(jié)果:\n\n\n");printf("方法一:%d\n",w2);printf("方法二:%d\n",w);printf("方法三:%d\n",w3);printf("\n \n");floata,i;clock_tstart,finish;doubleusetime;i=0;start=clock();
while(i<1000000){f1(m,n);i++;}finish=clock();usetime=finish-start;printf(“ 方法一用時(shí)%.f*10八(-6)豪秒\n",i=0;start=clock();while(i<1000000){f2(m,n);i++;}finish=clock();usetime=finish-start;printf(“ 方法二用時(shí)%.f*10八(-6)豪秒\n",i=0;start=clock();usetime);usetime);while(i<1000000)usetime);usetime);f3(m,n);i++;finish=clock();usetime=finish-start;printf(“ 方法三用時(shí)%.f*10八(-6)豪秒\n",usetime);}五、實(shí)驗(yàn)過(guò)程原始記錄(測(cè)試數(shù)據(jù)、圖表、計(jì)算等)請(qǐng)給出各個(gè)操作步驟的截圖和說(shuō)明;三種算法得到結(jié)果驗(yàn)證結(jié)果:計(jì)數(shù)器:我想到的是做一次循環(huán)就加一計(jì)算算法運(yùn)行時(shí)間結(jié)果:在計(jì)算時(shí)間過(guò)程中因?yàn)橛?jì)算機(jī)的運(yùn)算速度很快,所以我利用了循環(huán)把時(shí)間精確得到10-6毫秒六、實(shí)驗(yàn)結(jié)果、分析和結(jié)論(誤差分析與數(shù)據(jù)處理、成果總結(jié)等。其中,繪制曲線圖時(shí)必須用計(jì)算紙或程序運(yùn)行結(jié)果、改進(jìn)、收獲)請(qǐng)結(jié)合實(shí)驗(yàn)的結(jié)果分析算法原理;在實(shí)驗(yàn)中遇到了些什么問(wèn)題,如何解決;有什么收獲等;在本次實(shí)驗(yàn)中代碼是獨(dú)自完成的,一開(kāi)始我感覺(jué)這個(gè)代碼最多半小時(shí)就可以完成,但是第三個(gè)算法的時(shí)候我分析了好久才寫(xiě)出來(lái),在計(jì)算三種方法運(yùn)行時(shí)間的時(shí)候,我一開(kāi)始只精確到毫秒(ms),計(jì)算結(jié)果都是零,后面我寫(xiě)了一個(gè)循環(huán)調(diào)試才發(fā)現(xiàn)是我的精確度還在不夠,所以我想到了計(jì)算算法執(zhí)行了1000000次之后所用的時(shí)間,然后再求平均每次執(zhí)行的時(shí)間。結(jié)果分析:從前面的復(fù)雜度0(n)的出歐幾里得算法的是最優(yōu)算法,連續(xù)整除法其次,最復(fù)雜的是分解質(zhì)因數(shù)算法,再?gòu)拇a運(yùn)行的計(jì)數(shù)器和計(jì)算的時(shí)間來(lái)看結(jié)果恰好和前面的復(fù)雜度得到的結(jié)果一致,所以的出結(jié)論:歐幾里得算法最
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)餐飲連鎖行業(yè)運(yùn)營(yíng)市場(chǎng)深度調(diào)查及投資策略研究報(bào)告
- 2025-2030年中國(guó)阿莫西林行業(yè)競(jìng)爭(zhēng)現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)鍍層鋼板市場(chǎng)運(yùn)營(yíng)態(tài)勢(shì)與發(fā)展風(fēng)險(xiǎn)分析報(bào)告
- 2025-2030年中國(guó)酒石酸美托洛爾緩釋片行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)運(yùn)動(dòng)服飾行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)西廚設(shè)備行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)營(yíng)養(yǎng)保健食品市場(chǎng)發(fā)展?fàn)顩r及投資戰(zhàn)略研究報(bào)告
- 病人轉(zhuǎn)運(yùn)合同范本
- 2025河北省安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025年廣東省安全員知識(shí)題庫(kù)及答案
- 2025年天津三源電力集團(tuán)限公司社會(huì)招聘33人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 西安2025年陜西西安音樂(lè)學(xué)院專任教師招聘20人筆試歷年參考題庫(kù)附帶答案詳解
- 國(guó)家安全與生態(tài)安全
- 課題申報(bào)參考:養(yǎng)老金融在三支柱養(yǎng)老金體系中的作用機(jī)制與路徑仿真研究
- 2024-2025學(xué)年第二學(xué)期學(xué)校團(tuán)委工作計(jì)劃(附2月-6月安排表)
- 【物理】牛頓第一定律 2024-2025學(xué)年人教版物理八年級(jí)下冊(cè)
- 2025網(wǎng)格員考試題庫(kù)及參考答案
- 2025年春新冀教版英語(yǔ)三年級(jí)下冊(cè)課件 U1L1
- 川教版2024-2025學(xué)年六年級(jí)下冊(cè)信息技術(shù)全冊(cè)教案
- HYT 087-2005 近岸海洋生態(tài)健康評(píng)價(jià)指南
- (2024年)面神經(jīng)炎課件完整版
評(píng)論
0/150
提交評(píng)論