设为首页 加入收藏

TOP

算法----希尔排序(shell sort)
2015-02-02 14:43:25 来源: 作者: 【 】 浏览:22
Tags:算法 ---- 希尔 排序 shell sort

算法实现:


void sort::shell_sort(int* a, const int n)
{
?int h = 0;
?while (h? h = 3*h + 1;
?while(h>=1)
?{
? for(int i=h; i? {
? ?for(int j=i; j>=h && a[j] < a[j-h]; j = j-h)
? ?{
? ? swap(a,j,j-h);
? ?}
? }
? h = h/3;
?}
}


算法分析:从上述算法的实现过程中可以看出,希尔排序主要是先将数组分成若干个小的数组组成,然后对这些小的数组依次进行插入排序,经过这番排序之后,整个数组将会存在多个局部有序的子序列,这样的数组再使用(h=1时)插入排序,将会很快的完成数组的排序。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇算法----插入排序(insert sort) 下一篇算法----选择排序(select sort)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: