希尔排序实现:
void shellsort(vector<int> &nums)
{
int len=nums.size();
int gap=len/2;
int i=0,j=0;
for (gap=len/2;gap>0;gap/=2)
{
for (i=0;i<gap;i++)
{
for (j=i+gap;j<len;j+=gap)
{
int tmp=nums[j];
int k=j-gap;//先减去再判断,否则循环中再减去为负值
for(;k>=0 &&tmp<nums[k];k-=gap)
{
nums[k+gap]=nums[k];
}
nums[k+gap]=tmp;
}
}
}
}