希尔排序

原创 2015年07月09日 22:32:30

希尔排序的而思想是:先将待排序表分割成若干形如L[i,i+d,i+2d,...i+kd]的特殊子表,分别进行插入排序,当整个表中元素基本有序时,再对全体记录进行一次直接插入排序。

//d:增量

其空间复杂度为O(1),时间复杂度为O(n^1.3)


#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
	int c=*a;
	*a=*b;
	*b=c;
}
void shellsort(int *data,int n)
{
	if(data==NULL||n<=0)
		return;
	for(int d=n/2;d>=1;d/=2)
		for(int i=d;i<n;i++)
			for(int j=i-d;j>=0;j-=d)
				if(data[j]>data[j+d])
					swap(data[j],data[j+d]);
}
void main()
{
	int data[]={49,38,65,97,76,13,27,49,55,4};
	int len=sizeof(data)/sizeof(int);
	shellsort(data,len);
	for(int i=0;i<len;i++)
	{
		cout<<data[i]<<" ";
	}
	cout<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

排序算法之直接插入排序和希尔排序

相信许多人和我一样,排序算法看了好几遍,当时看懂了,过几天一些细节又忘记,所以现在讲排序算法做一个总结,从最基本的排序算法展开来,首先分析直接插入排序和希尔排序。 1.直接插入排序 思想:把一个数...
  • lierjin312158950
  • lierjin312158950
  • 2016年04月09日 15:55
  • 663

最详细的希尔排序,shell排序方法,一步一步调试

C程序设计语言摘来的,其基本思想是:先比较距离远的元素,而不是像简单交换排序算法那样先比较相邻的元素,这样可以快速减少大量的无序情况,从而减轻后续的工作。被比较的元素之间的距离逐步减少,直到减少为1,...
  • robomaster
  • robomaster
  • 2016年03月22日 11:01
  • 8962

二哥学算法之归并排序和希尔排序

归并排序是“分治”法一个很典型的应用。它比较稳定,时间复杂度也比较好,最坏也只是ON(log2N)ON(log_2N),空间复杂度为O(N)O(N)。 它的基本思想是对两个已经排好序的表(设为A和B...
  • u013220338
  • u013220338
  • 2015年03月22日 09:34
  • 1311

希尔排序 原理及实现

http://blog...sina...com...cn/s/blog_6d88423901014vai.html 原理 #include #include #include #includ...
  • u014713819
  • u014713819
  • 2014年04月27日 21:33
  • 1334

希尔排序的C++实现

感谢博主 http://www.cnblogs.com/90zeng/p/shell_sort.html 1.原理介绍 希尔排序又称为缩小增量排序,由D.L.Shell在1959年提出...
  • xinpo66
  • xinpo66
  • 2015年01月13日 12:10
  • 1816

【算法-排序之四】希尔排序

算法-排序之希尔排序     希尔排序得名于其设计者设计者希尔(Donald Shell),设计体现了计算机领域的“分治法”思想。在众多排序算法中,目前而言,希尔排序是唯一能在效率上与快...
  • Jiangweihll
  • Jiangweihll
  • 2014年03月25日 20:56
  • 8636

【排序算法】希尔排序原理及Java实现

希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年04月27日 09:19
  • 10630

希尔排序详解

基本概念: 希尔排序按其设计者希尔(Donald Shell)的名字命名,它是一种基于插入排序的快速排序算法,要了解希尔排序,必须先掌握插入排序的原理与实现。 希尔排序通过将比较的全部元素分为几个区...
  • daiyudong2020
  • daiyudong2020
  • 2016年09月06日 00:04
  • 1205

C#之希尔排序

//文件中的数据格式为 // 1 2 3 4 5 // 1 2 3 5 6 using System; using System.Text; using System.Collections; usi...
  • riyuedangkong1
  • riyuedangkong1
  • 2016年11月10日 17:06
  • 458

数据结构系列之希尔排序详解

基于插入排序的希尔排序Java实现
  • fengyinchao
  • fengyinchao
  • 2015年05月27日 09:25
  • 1796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:希尔排序
举报原因:
原因补充:

(最多只允许输入30个字)