日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 玩轉嵌入式
[導讀]C語言算法圖解

來源:嵌入式linux | 排版:玩轉嵌入式
希爾排序和插入排序很相似,有點像插入排序的升級版本。
希爾排序是希爾(Donald Shell)于1959年提出的一種排序算法。希爾排序也是一種插入排序,它是簡單插入排序經過改進之后的一個更高效的版本,也稱為縮小增量排序,同時該算法是沖破O(n2)的第一批算法之一
希爾排序也是一種插入排序算法,只不過在插入排序上突破了結界,達到了另一種頂峰的存在,這種頂峰使得時間復雜度變成「O(nLogn)~O(n^2)」。

假設,我們需要給下面的數(shù)據(jù)進行排序:

結合之前的文章,我們知道兩個數(shù)據(jù)的插入排序就是比較兩個數(shù)據(jù)的大小,然后進行排列。
希爾排序是通過分組 插入。
首先,我們排序的數(shù)量是8個,我們需要把數(shù)據(jù)分成8/2=4組,如下圖所示:

對上面4組的數(shù)據(jù)進行插入排序后得到:


然后,再繼續(xù)分組8?2?2=2分成2組:

這兩組數(shù)據(jù)再進行插入排序,如下圖所示:

這樣之后,整個數(shù)據(jù)的排序就差不多完成了。
我們在這個基礎上再對整個隊列執(zhí)行一次插入排序,就會完成了整個隊列的排序,因為之前已經對數(shù)據(jù)進行過排序,再進行插入排序的時候,效率會明顯得到提升。

整個過程可以觀看動態(tài)圖片:

代碼實現(xiàn)看看:
#include
#include
#include

int shell_sort(int arr[],int n)
{
register int i, j, tmp;
int step;

for(step = n/2; step > 0;step /= 2)/*增量步長*/
{
/*step = 4 2 1*/
for(i = step; i < n; i )
{
tmp = arr[i];
j = i - step;
for(;j >= 0
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉