西北工業(yè)大學(xué)程序設(shè)計(jì)大作業(yè).doc
《西北工業(yè)大學(xué)程序設(shè)計(jì)大作業(yè).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《西北工業(yè)大學(xué)程序設(shè)計(jì)大作業(yè).doc(19頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
學(xué) 院 學(xué)院 班 級(jí) 學(xué) 號(hào) 姓 名 目錄 1 摘要 3 1.1 設(shè)計(jì)題目 3 1.2 設(shè)計(jì)內(nèi)容 3 1.3 開發(fā)工具 3 1.4 應(yīng)用平臺(tái) 3 2 詳細(xì)設(shè)計(jì) 3 2.1 程序結(jié)構(gòu) 3 2.2 主要功能 4 2.3 函數(shù)實(shí)現(xiàn) 5 2.4 開發(fā)日志 7 3 程序調(diào)試及運(yùn)行 7 3.1 程序運(yùn)行結(jié)果 7 3.2 程序使用說(shuō)明 12 3.3 程序開發(fā)總結(jié) 12 4 附件(源程序) 12 1 摘要 1.1 設(shè)計(jì)題目 算法型大作業(yè)題目:編寫七種排序算法的演示程序。 1.2 設(shè)計(jì)內(nèi)容 編寫快速排序、插入排序、選擇排序、冒泡排序、堆排序、歸并排序、基數(shù)排序函數(shù),通過(guò)主函數(shù)調(diào)用以實(shí)現(xiàn)七種排序算法的演示。 1.3 開發(fā)工具 Visual C++ 6.0 1.4 應(yīng)用平臺(tái) Windows 2000/XP/Vista 32位 2 詳細(xì)設(shè)計(jì) 2.1 程序結(jié)構(gòu) 程序的整體結(jié)構(gòu)與流程見下圖所示。 程序運(yùn)行時(shí)在主菜單中輸入序號(hào)選擇排序方法或選擇結(jié)束程序,當(dāng)進(jìn)行某種排序方法后,在主函數(shù)中輸入待排數(shù)據(jù)個(gè)數(shù)和待排數(shù)據(jù),通過(guò)調(diào)用對(duì)應(yīng)的排序函數(shù)實(shí)現(xiàn)排序并輸出。該排序結(jié)束后再次進(jìn)入主函數(shù),通過(guò)循環(huán)重復(fù)上述操作。其中,主函數(shù)中將數(shù)組地址和待排序數(shù)據(jù)個(gè)數(shù)傳遞給排序函數(shù),在排序函數(shù)中實(shí)現(xiàn)排序功能。 輸出排序結(jié)果 開始 快速 插入 選擇 冒泡 堆排 歸并 基數(shù) 選擇排序方法 進(jìn)入主菜單 退出系統(tǒng) 2.2 主要功能 函數(shù)的功能為對(duì)快速排序、插入排序、選擇排序、冒泡排序、堆排序、歸并排序、基數(shù)排序算法的演示。 主函數(shù):程序運(yùn)行時(shí),可使運(yùn)行者根據(jù)提醒輸入相關(guān)操作,從而進(jìn)入不同的排序方法或者退出。 快速排序函數(shù):根據(jù)快速排序的算法,最后輸出 插入排序函數(shù):根據(jù)插入排序的算法,最后輸出 選擇排序函數(shù):根據(jù)選擇排序的算法,最后輸出 冒泡排序函數(shù):根據(jù)冒泡排序的算法,最后輸出 堆排序函數(shù):根據(jù)堆排序的算法,最后輸出 歸并排序函數(shù):根據(jù)歸并排序的算法,最后輸出 基數(shù)排序函數(shù):根據(jù)基數(shù)排序的算法,最后輸出 2.3 函數(shù)實(shí)現(xiàn) 主函數(shù): 在主函數(shù)中對(duì)菜單輸出,通過(guò)switch語(yǔ)句中的case分支選擇所需要的排序方法;通過(guò)while循環(huán)使演示程序在運(yùn)行時(shí)能夠持續(xù)進(jìn)行 快速排序: 快速排序(kuaisu)又被稱做分區(qū)交換排序,這是一種平均性能非常好的排序方法。其算法基本思想是:任取排序表中的某個(gè)數(shù)據(jù)元素(例如取第一個(gè)數(shù)據(jù)元素)作為基準(zhǔn),按照該數(shù)據(jù)元素的關(guān)鍵字大小,將整個(gè)排序表劃分為左右兩個(gè)子表: 左側(cè)子表中所有數(shù)據(jù)元素的關(guān)鍵字都小于基準(zhǔn)數(shù)據(jù)元素的關(guān)鍵字。右側(cè)子表中所有數(shù)據(jù)元素的關(guān)鍵字都大于或等于基準(zhǔn)數(shù)據(jù)元素的關(guān)鍵字,基準(zhǔn)數(shù)據(jù)元素則排在這兩個(gè)子表中間(這也是該數(shù)據(jù)元素最終應(yīng)安放的位置),然后分別對(duì)這兩個(gè)子表重復(fù)施行上述方法的快速排序,直到所有的子表長(zhǎng)度為1,則排序結(jié)束。 插入排序: 插入排序(charu)的基本思想:開始時(shí)把第一個(gè)數(shù)據(jù)元素作為初始的有序序列,然后從第二個(gè)數(shù)據(jù)元素開始依次把數(shù)據(jù)元素按關(guān)鍵字大小插入到已排序的部分排序表的適當(dāng)位置。當(dāng)插入第i(1=n,因此在則趟歸并中while循環(huán)不執(zhí)行,只做把temptable.arr[]中的數(shù)據(jù)元素復(fù)制到table.arr[]的工作。 基數(shù)排序: “基數(shù)排序法”(radix sort)則是屬于“分配式排序”(distribution sort),基數(shù)排序法又稱“桶子法”(bucket sort)或bin sort,顧名思義,它是透過(guò)鍵值的部份資訊,將要排序的元素分配至某些“桶”中,藉以達(dá)到排序的作用,基數(shù)排序法是屬于穩(wěn)定性的排序,其時(shí)間復(fù)雜度為O (nlog(r)m),其中r為所采取的基數(shù),而m為堆數(shù),在某些時(shí)候,基數(shù)排序法的效率高于其它的比較性排序法。具體可以參看后面的代碼進(jìn)行理解。 其它: 使用了stdlib頭文件里包含的系統(tǒng)函數(shù),包括清屏函數(shù)和運(yùn)行時(shí)的暫停,增強(qiáng)了程序運(yùn)行時(shí)的效果。 2.4 開發(fā)日志 在老師布置了大作業(yè)的題目后,我就把題目下載下來(lái)并進(jìn)行分析已選擇合適的題目。經(jīng)過(guò)我的慎重考慮,選擇了算法型大作業(yè)題目中的編寫七種排序算法的演示程序,覺得自己有能力把這道題目很好完成。 在認(rèn)真分析連題目后,基本確定了整體的思路,但是其中有堆排序,歸并排序,基數(shù)排序我沒有在教材中接觸過(guò),于是借助了圖書館和網(wǎng)絡(luò)上的資源,重點(diǎn)對(duì)這三的函數(shù)進(jìn)行編寫。在編寫大作業(yè)過(guò)程中大的困難我沒有遇到,只是有些小的疏忽常常導(dǎo)致程序無(wú)法運(yùn)行,如形參和實(shí)參的不一致等。我也在其中意識(shí)到對(duì)知識(shí)掌握的不夠熟練,在解決了這些問(wèn)題后,我覺得自己對(duì)程序的編寫更加熟練了,對(duì)問(wèn)題的分析也更加嚴(yán)謹(jǐn)了。在C程序設(shè)計(jì)的實(shí)驗(yàn)和理論考試之前代碼已基本完成。 在考試結(jié)束后,我又對(duì)程序稍微進(jìn)行了修改,使之運(yùn)行時(shí)效果更好。接著開始寫實(shí)驗(yàn)報(bào)告,整理自己的大作業(yè)。我對(duì)我的作業(yè)是很滿意的。 3 程序調(diào)試及運(yùn)行 3.1 程序運(yùn)行結(jié)果 1.進(jìn)入程序運(yùn)行后所顯示的菜單: 2.快速排序: 3.插入排序: 4.選擇排序: 5.冒泡排序: 6.堆排序: 7.歸并排序: 8.基數(shù)排序: 9.結(jié)束: 3.2 程序使用說(shuō)明 1.打開源程序,調(diào)試完畢后開始運(yùn)行,開始進(jìn)行七種算法的演示; 2.按照說(shuō)明進(jìn)行輸入,選擇數(shù)字1~7即可進(jìn)入相應(yīng)的排序算法演示程序,選擇8結(jié)束程序; 3.選擇排序的方法后,按要求輸入待排數(shù)據(jù)的個(gè)數(shù),然后輸入待排序數(shù)據(jù)即可(數(shù)據(jù)排序結(jié)束后,會(huì)自動(dòng)清屏,進(jìn)入菜單進(jìn)行接下來(lái)的選擇); 4.應(yīng)當(dāng)注意,本演示程序?qū)?shù)據(jù)進(jìn)行的是升序; 3.3 程序開發(fā)總結(jié) 在選擇這個(gè)題目時(shí),我覺得難度系數(shù)10對(duì)我有挑戰(zhàn)性,并且我對(duì)排序有相對(duì)比較熟悉,所以就選了這個(gè)題目。 但是在編寫過(guò)程中卻遇到很多問(wèn)題。我和我的同學(xué)進(jìn)行了討論,查閱了圖書館和網(wǎng)絡(luò)上的資料,結(jié)合力我個(gè)人對(duì)本題目的理解對(duì)各種問(wèn)題進(jìn)行了處理,學(xué)到了很多教材上沒有的知識(shí)。 從這次實(shí)踐中,我意識(shí)到自己還有很多不足之處。能力也得到了提高。我在進(jìn)行編程時(shí)還需要翻書查找,對(duì)于這一點(diǎn),只能說(shuō)對(duì)知識(shí)的學(xué)習(xí)還不夠扎實(shí),所以有空時(shí)還應(yīng)該繼續(xù)熟悉這門課程。另外,就是對(duì)于錯(cuò)誤的處理,不能得心應(yīng)手,不能正確處理一些簡(jiǎn)單的錯(cuò)誤。對(duì)于邏輯上的錯(cuò)誤,不能夠立即找到出錯(cuò)點(diǎn),往往需要向同學(xué)請(qǐng)教才能找出錯(cuò)誤,并且改正。我覺得這是自己獨(dú)自思考能力不高的問(wèn)題,遇事需要自己仔細(xì)想想,若還不能改正,再請(qǐng)教別人也不遲。 從總體上說(shuō),最終結(jié)果我很滿意,我覺得我所設(shè)計(jì)的程序操作方便,功能良好。我在上面花費(fèi)了很多時(shí)間和精力,對(duì)作業(yè)不斷進(jìn)行修改和完善,我很有成就感 。我的能力在這之中得到了提高。 4 附件(源程序) # include- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 西北工業(yè)大學(xué) 程序設(shè)計(jì) 作業(yè)
鏈接地址:http://www.820124.com/p-6613142.html