约 200 字 预计阅读 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| //希尔排序
template<typename T>
void Swap(T& a,T& b){T t=a;a=b;b=t;}
template<typename T>
void shellSort(T* ary,int l,int r)//默认为<,r为超尾
{
int len=(r-l);
for(int k=len/2;k>=1;--k)
for(int i=l+k-1;i<=r;++i)
for(int j=i;j-k>=l&&ary[j]<ary[j-k];j-=k)
Swap(ary[j],ary[j-k]);
}
template<typename T>
void shellSort(T* ary,int l,int r,bool comp(const T& a,const T& b))//r为超尾
{
int len=(r-l);
for(int k=len/2;k>=1;--k)
for(int i=l+k-1;i<=r;++i)
for(int j=i;j-k>=l&&comp(ary[j],ary[j-k]);j-=k)
Swap(ary[j],ary[j-k]);
}
|