希尔排序

标签: 希尔排序  数据结构  算法  插入排序

代码如下:

void Shell_sort(int a[],int         n){
	for(d=n/2;d>0;d/=2){
		for(i=d;i<n;i++){ //这里类似于插入排序
		temp=a[i];
		for(p=i;p>=d;p-=d){
			if(a[p-d]>temp){
              a[p]=a[p-d];			
			}
		}
		a[p]=temp;
		}
	}
}

注意:(1).定义增量序列DM DM-1...直到1

(2).对每个DK 进行DK-1间隔排序

(3).对DK-1进行排序,DK仍然是有序的希尔
排序也有缺点:比如增量元素不互质,导致小的增量根本不起作用

原文链接:加载失败,请重新获取