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

在黔江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,營銷型網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),黔江網(wǎng)站建設(shè)費用合理。
希爾排序
背景:插入排序在小規(guī)模數(shù)據(jù)、數(shù)據(jù)基本有序時效率較高
思想:將序列分為若干子序列進行插入排序,待序列基本有序時,對整體進行插入排序
代碼:
# python實現(xiàn)希爾排序(插入排序的一種) # 先宏觀進行調(diào)整,在進行微觀調(diào)整 def shellSort(lst, k, reverse=False): length = len(lst) dk = k # 設(shè)置一個增量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)時間復(fù)雜會根據(jù)步長序列的不同而不同,最壞時間復(fù)雜度是O(n^2),在操作過程中是不穩(wěn)定的,要注意哦~
新聞名稱:創(chuàng)新互聯(lián)Python教程:python中如何進行希爾排序?
文章位置:http://m.5511xx.com/article/dpecpeo.html


咨詢
建站咨詢
