排序演算法 希爾排序

2021-07-26 21:23:57 字數 615 閱讀 5873

這應該是最後一篇寫排序演算法的部落格吧。

希爾排序:逐次分割序列,每次對其中一小段進行插入排序。在陣列基本有序的情況下,插入排序可以有很好的效率,通過這種方式來提高排序效率。

思路上跟歸併排序挺像的,都是分割成較小的子串行,對子序列排序,再逐漸擴大子串行的長度,直至子串行長度等於原序列本身。不同的地方是,分割的時候歸併排序的子串行是緊鄰的,希爾排序的子串行是有乙個間隔的;希爾排序通過縮小間隔值,一直到1,此時子串行就是原序列,歸併排序是將子串行逐個合併,最後合併為原序列;歸併排序效率提公升主要是靠在序列基本有序情況下,插入排序的高效率來實現,歸併排序則是通過兩方面,一方面是(a+b)*(a+b)>=a^2+b^2,乙個是對長度為n和m的有序序列的合併,效率可以達到n+m。

#include#include#define n 105

void shellsort(int a,int n)

a[k+step]=temp;}}

return ;

}int main()

shellsort(a, n);

for(int i=1;i<=n;i++)

printf("\n");

}return 0;

}

排序演算法 希爾排序

如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...

排序演算法 希爾排序

摘要 排序演算法有很多,最簡單的有氣泡排序和插入排序,這兩種方法都具有o n 2 的時間界.我們想要討論的是具有更好的時間界的排序演算法,比如希爾排序.1 希爾排序的思路是通過比較一定間距的元素來進行排序,最後再對所有相鄰元素進行一次插入排序.2 希爾排序最重要的引數是增量序列 h1,h2,ht 只...

排序演算法 希爾排序

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,...