希尔排序(C语言简单实现)
希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺序表的基本有序,如果对直接插入排序不了解的可以看下我的另一篇文章:直接插入排序,看懂了直接插入排序再回来看希尔排序就很简单了。
/* 顺序表L作希尔排序 */
void ShellSort(SqList *L){
int i, j;
int increment = L->length;
do{
increment = increment/3+1; //增量序列
for(i=increment+1;i<=L->length;i++){
if(L->r[i] < L->r[i-increment]){
//需将L->r[i]插入有序增量子表
L->r[0] = L->r[i]; //暂存在L->r[0]
for(j=i

希尔排序是直接插入排序的高效升级版,采用跳跃式比较和交换,通过精心选择增量序列来提高排序效率。虽然不是稳定的排序算法,但其时间复杂度为O(n^1.3),优于直接插入排序。文章介绍了希尔排序的复杂度分析,并给出了具体实现例子。
最低0.47元/天 解锁文章
988

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



