新聞中心
如果問(wèn)大家用于科學(xué)計(jì)算,屬于插入類排序的縮小增量法是什么?你知道嗎?其實(shí)是希爾排序法。 希爾排序是希爾(Donald Shell)于1959年提出的一種排序算法。希爾排序也是一種插入排序,是將整個(gè)無(wú)序列分割成若干小的子序列分別進(jìn)行插入排序的方法。它是簡(jiǎn)單插入排序經(jīng)過(guò)改進(jìn)之后的一個(gè)更高效的版本,也稱為縮小增量排序,同時(shí)該算法是沖破O(n2)的第一批算法之一。本文會(huì)向大家向大家介紹python中的希爾排序及其使用代碼。

在黔江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營(yíng)銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),黔江網(wǎng)站建設(shè)費(fèi)用合理。
希爾排序
背景:插入排序在小規(guī)模數(shù)據(jù)、數(shù)據(jù)基本有序時(shí)效率較高
思想:將序列分為若干子序列進(jìn)行插入排序,待序列基本有序時(shí),對(duì)整體進(jìn)行插入排序
代碼:
# python實(shí)現(xiàn)希爾排序(插入排序的一種) # 先宏觀進(jìn)行調(diào)整,在進(jìn)行微觀調(diào)整 def shellSort(lst, k, reverse=False): length = len(lst) dk = k # 設(shè)置一個(gè)增量dk while dk > 0: for i in range(dk, length): temp = lst[i] j = i while j >= dk and lst[j - dk] > temp: lst[j] = lst[j - dk] j -= dk lst[j] = temp dk = int(dk / 2) if reverse == False: return lst else: lst.reverse() return lst
輸出:
test1 = [19, 21, 4, 6, 25, 3, 99, 67, 12]
test2 = [19, 21, 4, 6, 25, 3, 99, 67, 12]
data1 = shellSort(test1, 7)
data2 = shellSort(test2, 2, True)
print("從小到大:", data1)
print("從大到小:", data2)希爾排序在最優(yōu)時(shí)間復(fù)雜會(huì)根據(jù)步長(zhǎng)序列的不同而不同,最壞時(shí)間復(fù)雜度是O(n^2),在操作過(guò)程中是不穩(wěn)定的,要注意哦~
本文標(biāo)題:創(chuàng)新互聯(lián)Python教程:python中如何進(jìn)行希爾排序?
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/dpecpeo.html


咨詢
建站咨詢
