首页 > 代码库 > 谢尔排序
谢尔排序
谢尔排序属于亚二次时间界,通过比较距离一定间隔的元素来工作,各趟比较所用的距离随时间算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。
template <typename Comparable>void shellsort(vector<Comparable>& a){ for(int gap=a.size()/2;gap>0;gap/=2) for(int i=gap;i<a.size();i++) { Comparable tmp=a[i];
int j=i; for(;j>=gap&&tmp<a[j-gap];j-=gap) a[j]=a[j-gap]; a[j]=tmp; } }
这里使用的谢尔增量
谢尔排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。