C 實現希爾排序

2021-10-17 11:49:43 字數 1232 閱讀 2475

希爾排序的特性總結

過程:1.預排序

2.直接插入排序

#include

using

namespace std;

#include

void

shellsort

(vector<

int>

& a,

int n)

else

} a[left+tag]

=ret;}}

}int

main()

shellsort

(a, a.

size()

);for(

auto e : a)

system

("pause");

return0;

}

結果:

}結果:

希爾排序是對直接插入排序的優化。

當gap > 1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體而言,可以達到優化的效果。

希爾排序的時間複雜度不好計算,需要進行推導,推導出來平均時間複雜度: o(n1.3—n2)

穩定性:不穩定

希爾排序C 實現

shell sort 希爾排序是一種對直接插入排序的改進方法,使用直接插入排序對於乙個基本有序的數列進行排序時,內部迴圈的次數會明顯減少,因此可以減小時間複雜度 希爾排序就是先使數列基本有序,然後再直接插入排序,減小插入排序的時間複雜度 希爾排序首先按一定增量進行插入排序,再逐步縮減增量,當這一增量...

c 實現希爾排序

希爾排序 shell sort 也稱為遞減增量排序演算法,是插入排序的一種高速而穩定的改進版 本。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 1.插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率 2.但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。希...

希爾排序(c 實現)

希爾 shell 排序的基本思想是 先取乙個小於n的整數d1作為第乙個增量把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序 然後,取得第二個增量d2 一般取d1 n 2,di 1 di 2。如果結果為偶數,則加1,保證di為奇數。希爾排序.cpp 定...