基本排序之希尔排序

来源:互联网 发布:知乎精华推荐 编辑:程序博客网 时间:2024/04/29 06:29

关于希尔排序,这是一种不稳定,而且属于插入排序。为什么?

希尔排序=分成若干个组子序列,分别插入排序。

怎么分组?

有一个增量h,没增加h,则把它们放在一起。插入排序,直到h减少到1,此时正是简单插入排序。

看代码

#include<iostream>using namespace std;template <class T>void shel(T p[],int n){int k,j,i;T t;k=n/2;while(k>0){for(j=k;j<=n-1;j++){t=p[j];i=j-k;while((i>=0)&&(p[i]>t)){p[i+k]=p[i];i=i-k;}p[i+k]=t;}k=k/2;}return;}
同样的当调用函数时,只需改为shel(p+10,40);即可。

这是两种非常常见的插入法的排序应用。

原创粉丝点击