真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

web開發(fā)中如何實(shí)現(xiàn)希爾排序

小編給大家分享一下web開發(fā)中如何實(shí)現(xiàn)希爾排序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)永春免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

希爾排序

希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進(jìn)版本。但希爾排序是非穩(wěn)定排序算法。

希爾排序是基于插入排序的以下兩點(diǎn)性質(zhì)而提出改進(jìn)方法的:

  • 插入排序在對(duì)幾乎已經(jīng)排好序的數(shù)據(jù)操作時(shí),效率高,即可以達(dá)到線性排序的效率;

  • 但插入排序一般來說是低效的,因?yàn)椴迦肱判蛎看沃荒軐?shù)據(jù)移動(dòng)一位;

希爾排序的基本思想是:先將整個(gè)待排序的記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個(gè)序列中的記錄“基本有序”時(shí),再對(duì)全體記錄進(jìn)行依次直接插入排序。

算法步驟

  1. 選擇一個(gè)增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

  2. 按增量序列個(gè)數(shù) k,對(duì)序列進(jìn)行 k 趟排序;

  3. 每趟排序,根據(jù)對(duì)應(yīng)的增量 ti,將待排序列分割成若干長(zhǎng)度為 m 的子序列,分別對(duì)各子表進(jìn)行直接插入排序。僅增量因子為 1 時(shí),整個(gè)序列作為一個(gè)表來處理,表長(zhǎng)度即為整個(gè)序列的長(zhǎng)度。

來源:https://github.com/hustcc/JS-Sorting-Algorithm

算法演示

web開發(fā)中如何實(shí)現(xiàn)希爾排序

排序動(dòng)畫過程解釋

  1. 首先,選擇增量 gap = 10/2 ,縮小增量繼續(xù)以 gap = gap/2 的方式

  2. 初始增量為 gap = 10/2 = 5,整個(gè)數(shù)組分成了 5 組

  3. 按顏色劃分為【 8 , 3 】,【 9 , 5 】,【 1 , 4 】,【 7 , 6 】,【 2 , 0 】

  4. 對(duì)這分開的 5 組分別使用上節(jié)所講的插入排序

  5. 結(jié)果可以發(fā)現(xiàn),這五組中的相對(duì)小元素都被調(diào)到前面了

  6. 縮小增量 gap = 5/2 = 2,整個(gè)數(shù)組分成了 2 組

  7. 【 3 , 1 , 0 , 9 , 7  】,【 5 , 6 , 8 , 4 , 2  】

  8. 對(duì)這分開的 2 組分別使用上節(jié)所講的插入排序

  9. 此時(shí)整個(gè)數(shù)組的有序性是很明顯的

  10. 再縮小增量 gap = 2/2 = 1,整個(gè)數(shù)組分成了 1 組

  11. 【 0, 2 , 1 , 4 , 3 , 5 , 7 , 6 , 9 , 0  】

  12. 此時(shí),只需要對(duì)以上數(shù)列進(jìn)行簡(jiǎn)單的微調(diào),不需要大量的移動(dòng)操作即可完成整個(gè)數(shù)組的排序

代碼實(shí)現(xiàn)

為了更好的讓讀者用自己熟悉的編程語言來理解動(dòng)畫,筆者將貼出多種編程語言的參考代碼,代碼全部來源于網(wǎng)上。

C++代碼實(shí)現(xiàn)

web開發(fā)中如何實(shí)現(xiàn)希爾排序

Java代碼實(shí)現(xiàn)

web開發(fā)中如何實(shí)現(xiàn)希爾排序

Python代碼實(shí)現(xiàn)

web開發(fā)中如何實(shí)現(xiàn)希爾排序

JavaScript代碼實(shí)現(xiàn)

web開發(fā)中如何實(shí)現(xiàn)希爾排序

以上是“web開發(fā)中如何實(shí)現(xiàn)希爾排序”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站標(biāo)題:web開發(fā)中如何實(shí)現(xiàn)希爾排序
當(dāng)前路徑:http://weahome.cn/article/jsggch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部