- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
應用髮梳式排序法改進傳統排序法之研究 大同技術學院資管系 吳明權 一、研究構想 排序是計算機的基本應用,隨著資料爆炸時代的來臨,排序可將雜亂無章的成績、業績、競賽、統計、會計等資料(data)排序輸出成為可以當作行動依據的訊息,即是有價值的決策資訊(information)。 演算法(algorithm)是指完成一個任務所需要的具體步驟和方法,也就是說給定初始狀態或輸入數據,經過電腦程序的有限次運算,能夠得出所要求或期望的終止狀態或輸出數據。此法通常與所用的計算機種類無關,係以解決特定問題為目的已知方法,是計算機科學的要素。(1,2) 多年來排序演算法的領域,頗有發展,以適應各種資料結構及大小檔案的應用,無論是對記憶體陣列的內部排序法(internal sort)或對磁碟中的外部排序法(external sort),基本上,吾人研究的重點是它的執行時間及所需的額外記憶體空間的大小。 本研究將100,1000,10000,100000項一維為陣列為樣本,在不增加額外記憶體的原則下,針對現有的古典泡沫排序法加以修改,研究執行速度上的改進效果。(3) 二、研究目標 本研究目標如下 1.探討目前已有的各種排序理論,並比較其優缺點。 2.研究髮梳式排序法的收縮因子,觀察並選出最理想的收縮因子。 3.設計程式並比較不同樣本數,各種排序法的執行時間。 4.設計程式以慢動作顯示各種排序法的執行過程,以供學生暸解,加強教學效果。 三、研究方法 1. 定義問題 對大部份初學程式設計者而言,泡沫式排序法(bubble sort)通常是第一個常用的標準排序法。由於這種排序法亦於設計與除錯且耗費記憶體甚少,程式可用於大型主機、個人電腦甚至可程式的計算器上。 對許多陣列,泡沫排序法是如此不可置信的慢,它無法作為大眾排序的標準常規。吾人必須尋求簡易的改進,使它能對各種陣列排序皆能迅速 2.陳述假設 本研究搜集中外有關排序文獻,進一部分析後,提出解決問題之假設。 在泡沫是排序法中,每個元件皆與其後續者相比較,如果前後大小失序,則兩者相換,在陣列上經過許多階段處理,所有元件才能全部有序。必須植到有一段不需交換,它才算完成整個排序;此時最小值浮現在最頂點,故謂之泡沫式排序。 兩個數值的比較程序,可算是任何一種排序法中最耗費時間的部份,如果陣列有N個元件,泡沫排序法需要比較的次數與N2誠正比。 由於受到某些元件(比喻稱為烏龜)滋生的影響,泡沫排序容易變慢,在昇階的排序中,這個位於陣列末端相較起來頗小的數字,每個階段才才能往上升一個位置,因此只要一個烏龜就可以導致相當長的延遲。 髮梳式排序法可以是傳統泡沫排序法的一種改進,傳統泡沫排序法中比較原件之間之間隔為1,但吾人可將比較元件間隔數比1大,則可消除許多耗費時間的烏龜,而加快了排序的速度。 3.演繹推理: 經由演繹推理的過程,確定假設之可行性。(7) 經由200000個以上亂數排列的實驗觀察,才得到1.3這個理想的因子。我們將整個欲排序的陣列間隔數除以1.3,在每個後續的步驟進行前,我們將前次比較的間隔數除以1.3,直到商數少於1時,我們便將比較堅格恢復為1。併將髮梳式排序恢復為泡沫式排序。 4.蒐集並分析相關資料,經由實驗比較,考驗假設。 如果將陣列間革除成兩辦並用不同的收說縮因子例如X=1.37 與X=1.24去處理各半可以在X=1.37 與X=1.24 間顯示了火山口般的理想點,我們比收縮因子1.3快1%,但是也多出3% 的烏龜,這是不能接受的交換。 如果我們以50個亂數間隔,做最起始的比較間隔也無法作任何改進。 我們設計流程,以每一階段的交換數,去決定下一階段如何收縮,但是那些方法均無法與髮梳排序法相比,對於非亂數排列的陣列更是無效。 4.蒐集並分析相關資料,經由實驗比較,考驗假設 如果用線性地漸進法來降低每次比較的間隔,例如比較間隔依序為0.9N,0.8N,0.7N,…,1,實驗比較結果都比法梳式為慢。 如果以指數型收縮因子做實驗,每一階段前,將比較間隔除以一個收縮因子,此收縮因子再除以第二個收縮因子,依此類推,此法較接近前述的髮梳式排序,但速度榮仍略慢於收縮因子1.3的髮梳式排序法。 4.蒐集並分析相關資料,經由實驗比較,考驗假設 我們同時發現:當排序間格為11時,排序效率比間格為9或10為佳, 故在程式設計時須列入考慮。 五、設計程式肯定假設,並提出進一步研究的領域 如果我們用Visiual Basic.net來設計,我們不必用到系統函數庫,我們先簡單地設計一個泡沫式排序程式,只要加上幾行敘述,我們就可以把傳統的泡沫式
原创力文档


文档评论(0)