内部排序算法之希尔排序

来源:互联网 发布:免费自动发卡平台源码 编辑:程序博客网 时间:2024/05/22 09:43

希尔排序是在简单插入排序上做了改进。待排序系列长度记为N,增量d一般取从N/2, N/4, N/8...到1的序列。希尔增量的选取决定了排序的效率。将待排序系列中,元素下标间距为d的所有元素分为一组, 对每组进行简单插入排序。当d减少到等于1使,最后做一次简单插入排序。

如果对简单插入排序很熟悉,实现希尔排序难度不大

int shell_sort(int *p, int n){int d, i, j, k;for(d=n/2; d>0; d/=2){for(i=d; i<n; i+=d){k = p[i];j=i-d;while(j>=0 && p[j]>k){p[j+d] = p[j];j-=d;}p[j+d] = k;}}}

希尔排序的效率优于O(n^2)的算法,差于O(n*lgn)的算法。最差情况和最好情况效率相差不大。中小型规模可以先用该排序算法。
0 0
原创粉丝点击