C语言基本排序算法之shell排序实例
本文实例讲述了C语言基本排序算法之shell排序。分享给大家供大家参考,具体如下:
shell排序是对直接插入方法的改进方法.
/*-------------------------------------------------------------------------------------
Shell_sort.h
shell排序是对直接插入方法的改进,它并不是对相邻元素进行比较,而是对一定间隔的元素比较.
选择增量序列的几种方法:(为方便,本例采用第一种增量序列)
1.h[1]=size,h[k]=h[k-1]/2.
最坏运行时间为O(N^2).
最坏情形:数组长度为2^n,数组的偶数位置上同是一个数,奇数位置上也同是一个数,
且比偶数位置的小。此时到最后一次遍历前shell排序实际上什么也没做。
最后一次遍历相当于直接插入方法。
2.Hibbard增量序列:h=1,3,7,,2^k-1
这个的区别于上的主要的特点是相邻增量没有公因子
最坏运行时间为O(n^{1.5});
3.Sedgewick增量序列:{1,5,19,41,109,}
-------------------------------------------------------------------------------------*/
#ifndefSHELL_SORT_H
#defineSHELL_SORT_H
#include"typedef.h"
voidShell_sort(T*a,intn)
{
for(intgap=n;gap>0;gap=gap/2)
{
for(inti=0;i!=n;++i)
{
Ttemp=a[i];
intj=i-gap;
for(;j>=0&&a[j]>temp;j=j-gap)
a[j+gap]=a[j];
a[j+gap]=temp;
}
}
}
#endif
希望本文所述对大家C语言程序设计有所帮助。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短