码迷,mamicode.com
首页 > 编程语言 > 详细

排序 - 希尔排序

时间:2016-05-01 12:16:07      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

先看懂直接插入排序再看这个

#include<cstdlib>
#include<cstdio>
#include<cstring>
#define MAXSIZE 10
typedef struct{
	int r[MAXSIZE+1];
	int length;
}SqList;

//就是将基本有序的序列在继续有序(类似直接插入)达到完全有序 
//不懂,详见《大话数据结构》程杰 392页 
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[0] = L->r[i];
				for(j=i-increment;j>0&&L->r[0]<L->r[j];j-=increment)
					L->r[j+increment] = L->r[j];
				L->r[j+increment] = L->r[0];
			}
		}
	}while(increment>1);
	return;
}

void Assignment(SqList *L,int len,int *a){
	int i;
	L->length = len;
	for(i=1;i<=len;i++){
		L->r[i] = a[i-1];
	}
	return ;
}
void Output(SqList L){
	int i;
	for(i=1;i<=L.length;i++){
		printf("%d  ",L.r[i]);
	}
	printf("\n");
	return;
}

int main(){
	int a[10] = {9,1,5,8,3,7,4,6,2,10};
	SqList L;
	Assignment(&L,10,a);
	ShellSort(&L);
	Output(L);
	return 0;
}

  

排序 - 希尔排序

标签:

原文地址:http://www.cnblogs.com/zhuozhuo/p/5450188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!