举例:
希尔排序是跨度大一点的直接插入排序,直接插入排序可以看成一趟增量是 1 的希尔排序。
算法属性:
时间复杂度取决于所选取的增量序列。
空间复杂度为O(1)
不稳定排序。
只能用于顺序结构,并且最后 一个增量值必须等于1。
适合初始记录无序、n较大时的情况。
代码实现:
#include<stdio.h>
#define MAXSIZE 20
typedef int KeyType;
typedef int InfoType;
//记录类型
typedef struct {
KeyType key;
InfoType otherinfo;
}RedType;
//顺序表类型
typedef struct {
RedType r[MAXSIZE + 1]; //r[0]闲置或作哨兵
int length; //顺序表长度
}SqList;
//希尔插入排序
void ShellInsert(SqList &L,