是一种分组再排序再缩小组直到组为1的排序。
最坏情况O(n^2)的算法复杂度,没有证明但是随机数据算出大致算法复杂度为O(n^5/4)。
同时介绍一个函数sort。。。在结尾。
这是希尔排序:
#includeusing namespace std; int f[100005]; int main(){ int n; cin>>n; for(int i=0;i >f[i];//读入n个数字 } int key,j;//key是当前要交换的值 for(int g=n/2;g>0;g/=2){//分组排序,直到g为1 for(int i=g;i =g&&key 这是sort,比较方便的一个排序函数,并且复杂度很低。
#includeusing namespace std; int f[25]; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>f[i]; } sort(f+1,f+n+1);//第一个参数填数组地址,因为我是从f[i]开始存所以是f+1,最后一个参数是最后一个要排序的数组. for(int i=1;i<=n;i++){ cout<



