希尔排序实现:
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;
}
}
}
}

本文深入探讨了希尔排序算法的原理与实现细节,通过逐步分析算法过程,提供了一个易于理解且高效的希尔排序代码实现。
3153

被折叠的 条评论
为什么被折叠?



