怎樣讓python實現希爾排序演算法
def shellSort(items):
inc = len(items) / 2
while inc:
for i in xrange(len(items)):
j = i
temp = items[i]
while j >= inc and items[j-inc] > temp:
items[j] = items[j - inc]
j -= inc
items[j] = temp
inc = inc/2 if inc/2 else (0 if inc==1 else 1)
a = [35, -8, 11, 1, 68, 0, 3];
shellSort(a)
print a # [-8, 0, 1, 3, 11, 35, 68]
相關推薦
怎樣讓python實現希爾排序演算法
def shellSort(items): inc = len(items) / 2 while inc: for i in xrange(len(items)): j = i temp = items[i] while j >= inc and items[j-inc] > t
用python實現希爾排序(shell_sort)
def shell_sort(a): n = len(a) gap = n >> 1 # gap是長度的一半 while gap > 0: f
SWUST資料結構--希爾排序演算法實現
#include<iostream> using namespace std; int main(){ int i,n; int a[50]; cin>>n; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<
排序演算法 | 希爾排序演算法原理及實現和優化
希爾排序也是一種插入排序演算法,也叫作縮小增量排序,是直接插入排序的一種更高效的改進演算法。 希爾排序因其設計者希爾(Donald Shell)的名字而得名,該演算法在 1959 年被公佈。一些老版本的教科書和參考手冊把該演算法命名為 Shell-Metzner
希爾排序演算法(縮小增量排序)及C語言實現
希爾排序,又稱“縮小增量排序”,也是插入排序的一種,但是同前面幾種排序演算法比較來看,希爾排序在時間效率上有很大的改進。 在使用直接插入排序演算法時,如果表中的記錄只有個別的是無序的,多數保持有序,這種情況下演算法的效率也會比較高;除此之外,如果需要排序的記錄總量很少,該演算法的效率同樣會很高。希爾排序就是
希爾排序演算法原理與實現
1.問題描述 輸入:n個數的序列<a1,a2,a3,...,an>。 輸出:原序列的一個重排<a1*,a2*,a3*,...,an*>;,使得a1*<=a2*<=a3*<=...<=an*。 2. 問題分析 例如,假設有
排序演算法:希爾排序演算法實現及分析
希爾排序演算法介紹希爾排序是D.LShell 與1957年提出來的一種排序演算法,在這之前排序演算法的時間複雜度都是O(n^2),希爾排序演算法是突破這個時間複雜度的第一批演算法之一。我們知道直接插入排序演算法(不知道的請看:排序演算法:直接插入排序演算法實現及分析),在某些
希爾排序演算法實現(C++)
希爾排序是一種按照增量排序的方法。其中增量值是小於n的正整數。 shell排序的基本思想[1]是: 先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;然後,取第二個增量d2<d1重複上述的分組和排序,直
八種排序演算法Java實現-希爾排序
/*********希爾排序先從0定義再到gap*********************/ public static int[] shell2(int []num,int len){
圖解排序演算法及實現——希爾排序 (Shell Sort)
希爾排序(ShellSort)也稱增量遞減排序演算法,即跨多步版的InsertionSort,是InsertionSort基礎上的改進版。InsertionSort可以看作ShellSort中gap=1的特例。希爾排序是非穩定排序演算法。 希爾排序通過將全部元
python語言實現希爾排序
希爾排序: 以下為舉例說明希爾排序用法 54,26, 93,17,77,31,44,55,20 取gap為4:從54開始作為第一個,加4取出第二個 54 77
Java實現的希爾排序演算法
一:希爾排序演算法基本思想希爾排序(Shell's Sort)是插入排序的一種又稱“縮小增量排序”(Diminishing Increment Sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因D.L.Shell於1959年提出而得名
使用python實現希爾、計數、基數排序
希爾排序 希爾排序是一個叫希爾的數學家提出的一種優化版本的插入排序。 首先取一個整數d1=n//2,將元素分為d1個組,每組相鄰元素之間的距離為d1,在各組內進行直接插入排序。 取第二個整數d2=d1//2,重複上述分組排序過程,直到di=1,即所有元素在同一組內進行直接插入排序。 希爾排序是使整體資料越來
希爾排序演算法
希爾排序 希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因DL.Shell於1959年提出而得名。 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐漸減少,每組包
希爾排序演算法(java版)
希爾排序:直接插入排序的改良版,威力更強。 直接插入排序是每一移一個,比較相鄰的兩個 希爾排序第一次分堆是 n = n / 2為一堆的,也就是下標為i的元素和下標為i + n/2,i + n/2 +… < n的元素作為一堆的, 每次比較i 和 i + n
資料結構之---C語言實現希爾排序
wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------
c++實現希爾排序
希爾排序(Shell Sort),也稱為遞減增量排序演算法,是插入排序的一種高速而穩定的改進版本。希爾排序是基於插入排序的以下兩點性質而提出改進方法的:1.插入排序在對幾乎已經排好序的資料操作時,效率
希爾排序演算法(排序詳解)
希爾排序 基本思想 希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因DL.Shell於1959年提出而得名。希爾排序是記錄按下標的一定增量分組,對每組使用直接插入排序演算法
Java實現希爾排序(思路與實現)
希爾排序希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因DL.Shell於1959年提出而得名。 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增
c語言實現希爾排序
自己看書時,對希爾排序的理解一直處於茫然狀態,然後在維基百科上看到了這樣一句話,再加上這樣一個例子,總算消除了我的迷惑。 因為訪問危機百科需要翻牆,故複製了了相關內容在本部落格裡,若讀者已翻牆,可以直接點此進入維基百科檢視。 ------------------------