希尔排序(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