希爾排序的特性總結
過程: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 定...