




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件算法綜合設(shè)計說明書軟件算法綜合設(shè)計說明書排序綜合學(xué)院:信息與電氣工程學(xué)院專業(yè):計算機科學(xué)與技術(shù)班級:10-02姓名:學(xué)號:1002102142012.6.28軟件算法綜合設(shè)計說明書一、課程設(shè)計目的1、初步具備根據(jù)應(yīng)用需求選擇合理數(shù)據(jù)結(jié)構(gòu)并進(jìn)行算法設(shè)計的能力;2、進(jìn)一步提升C語言的應(yīng)用能力;3、初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能;4、提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力;5、訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué)的工作方法和作風(fēng);6、提升文檔寫作能力二、課程設(shè)計題目及要求排序綜合(限3人完成)利用隨機函數(shù)產(chǎn)生N個隨機整數(shù)(20000以上),對這些數(shù)進(jìn)行多種方法進(jìn)行排序。要求:至少采用三種方法實現(xiàn)上述問題求解(提示,可采用的方法有插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序)。并把排序后的結(jié)果保存在不同的文件中。(提示,可采用的方法有插入排序、希爾排序、起泡排序、快速排序、選擇排序、堆排序、歸并排序統(tǒng)計每一種排序方法的性能(以上機運行程序所花費的時間為準(zhǔn)進(jìn)行對比),找出其中兩種較快的方法。三、題目分析冒泡排序:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。四、大體設(shè)計五、設(shè)計詳細(xì)源代碼1.冒泡排序#include<iostream>#include<time.h>usingnamespacestd;#defineN20000voidmain(){ inta[N]; inti,j,temp; srand(time(0)); for(i=0;i<N;i++) { a[i]=rand(); } intflag=1; for(i=0;i<N-1&&flag==1;i++) { flag=0; for(j=0;j<N-i-1;j++) { if(a[j+1]<a[j]) { temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; flag=1; } } } for(i=0;i<N;i++) { printf("%d",a[i]); }}2、統(tǒng)計性能#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN10000voidmain(){inti,j,k,n;intn1,t;inta[N],b[N];FILE*fp;clock_tstart,finish;inttime1,time2,time3;printf("輸入要產(chǎn)生的隨機數(shù)個數(shù):");scanf("%d",&n);srand((unsigned)time(NULL));for(i=0;i<n;i++)a[i]=rand();for(i=0;i<n;i++)b[i]=a[i];printf("**************************\n");printf("\t插入排序\n");printf("**************************\n");start=clock();for(i=1;i<n;i++){t=b[i];for(j=i-1;j>=0&&t<b[j];j--)b[j+1]=b[j];b[j+1]=t;}finish=clock();time1=finish-start;printf("插入排序耗時%d毫秒!\n\n\n",time1);fp=fopen("output1.txt","w");for(i=0;i<n;i++)fprintf(fp,"%d",b[i]);fclose(fp);for(i=0;i<n;i++)b[i]=a[i];printf("**************************\n");printf("\t選擇排序\n");printf("**************************\n");start=clock();for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(b[k]>b[j])k=j;t=b[i];b[i]=b[k];b[k]=t;}finish=clock();time2=finish-start;printf("選擇排序耗時%d毫秒!\n\n\n",time2);fp=fopen("output2.txt","w");for(i=0;i<n;i++)fprintf(fp,"%d",b[i]);fclose(fp);for(i=0;i<n;i++)b[i]=a[i];printf("**************************\n");printf("\t冒泡排序\n");printf("**************************\n");start=clock();n1=n-1;while(n1>0){j=0;for(i=0;i<n1;i++)if(b[i]>b[i+1]){t=b[i];b[i]=b[i+1];b[i+1]=t;j=i;}n1=j;}finish=clock();time3=finish-start;printf("冒泡排序耗時%d毫秒!\n\n\n",time3);fp=fopen("output3.txt","w");for(i=0;i<n;i++)fprintf(fp,"%d",b[i]);fclose(fp);}六、程序的調(diào)試與運行結(jié)果說明運行結(jié)果1、使用冒泡程序完成題目要求運行結(jié)果如圖1:圖1運行結(jié)果2、三鐘排序方法耗時結(jié)果如圖2:圖2結(jié)果說明:插入排序和選擇排序耗費時間較少七、課程設(shè)計總結(jié)通過這次課程設(shè)計的學(xué)習(xí)讓我學(xué)會了許多,加深了對數(shù)據(jù)結(jié)構(gòu)排序算法的認(rèn)識。在這次課程設(shè)計中,我們完成了每種排序算法。排序算法選了三個,包括:插入排序、選擇排序、冒泡排序。同時也實現(xiàn)了隨機數(shù)的生成。并把排序后的結(jié)果保存在不同的文件中。雖然在算法完成的過程中從網(wǎng)上參考了一些資料,但對這次課程設(shè)計的成果還是非常滿意的。這次的課程設(shè)計還有很多不足之處,如鏈表存儲結(jié)構(gòu)中的堆排序算法,當(dāng)排序個數(shù)過多時,就會等待很長時間??赡軙r調(diào)用的函數(shù)過多的原因造成的,但排序是正確的。用指針代替函數(shù)的調(diào)用。還有就是隨機數(shù)不能隨時更改,只能設(shè)定一次。鏈表歸并算法不是對鏈表直接操作,而是將鏈表中的元素放入數(shù)組中進(jìn)行排序,我想了很多方法都沒有想出對鏈表的直接操作的算法。由于時間限制,只在課程設(shè)計快結(jié)束時完成了產(chǎn)生隨機文件這部分,我想以后有時間再來完成它。同時在完成這個課程設(shè)計后,我也學(xué)到了很多知識,并能訓(xùn)練的掌握他們了。首先學(xué)會了隨機數(shù)的產(chǎn)生。熟練的撐握了C語言的文件讀寫操作。撐握了每種排序算法的基本思想,并從同學(xué)那里學(xué)會了編寫程序的一般步驟:思考問題,寫出解決方案
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨國公司授權(quán)經(jīng)銷合同范例
- 電子產(chǎn)品采購合同(簡易范本)
- 房屋托管合同版:條款詳解
- 建筑幕墻維修保養(yǎng)合同
- 合同:國產(chǎn)化項目-進(jìn)口直流電機電刷
- 新建停車場業(yè)主與開發(fā)商委托合同
- 婚內(nèi)子女撫養(yǎng)合同范本
- 基礎(chǔ)設(shè)施建設(shè)項目土地征用合同樣本
- 家庭分家析產(chǎn)合同全文
- 20 蜘蛛開店(教學(xué)設(shè)計)-2023-2024學(xué)年統(tǒng)編版語文二年級下冊
- 護(hù)理不良事件管理、上報制度及流程
- GB 9706.224-2021醫(yī)用電氣設(shè)備第2-24部分:輸液泵和輸液控制器的基本安全和基本性能專用要求
- 子宮內(nèi)膜異位癥診療指南完整課件
- 人教版小學(xué)三年級下冊數(shù)學(xué)應(yīng)用題專項練習(xí)題40614
- 短視頻抖音運營培訓(xùn)課程
- 醫(yī)生個人學(xué)習(xí)心得五篇
- 合規(guī)理論知識考核試題題庫及答案
- 新版人教版七年級下冊語文全冊課件(2020最新版)
- MSDS物質(zhì)安全技術(shù)資料-洗面水
- 河南省地圖含市縣地圖矢量分層地圖行政區(qū)劃市縣概況ppt模板
- 績效管理全套ppt課件(完整版)
評論
0/150
提交評論