希尔排序算法(Java语言)

原创 2016年05月30日 13:41:05

希尔排序以插入排序为基础。

希尔排序的每一趟需要选择一个步长,并按照步长进行插入排序。


	/**
	 * 希尔排序算法
	 * @param v
	 * @return
	 */
	public int shellSort(T v[]) {
		int n = v.length;
		for (int gap = n / 2; gap > 0; gap = gap / 2) {
			for (int i = gap; i < n; i++) {
				T temp = v[i];
				int j = i - gap;
				for (; j > -1 && temp.compareTo(v[j]) < 0; j -= gap) {
					v[j + gap] = v[j];
				}
				v[j + gap] = temp;
			}
		}
		return 0;
	}


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

【算法】希尔排序C语言实现

上一篇文章我们一起学习了直接插入排序,它的原理就是把前i个长度的序列变成有序序列,然后循环迭代,直至整个序列都变为有序的.但是说来说去它还是一个时间复杂度为(n^2)的算法,难道就不能再进一步把时间复...
  • lchad
  • lchad
  • 2015年02月06日 14:20
  • 4635

数据结构之---C语言实现希尔排序

数据结构之---C语言实现希尔排序
  • u012965373
  • u012965373
  • 2015年09月08日 13:43
  • 4931

数据结构基础 希尔排序 之 算法复杂度浅析

希尔排序(Shell Sort)又叫做缩小增量排序(diminishing increment sort),是一种很优秀的排序法,算法本身不难理解,也很容易实现,而且它的速度很快。 Shell排序通过...
  • u013630349
  • u013630349
  • 2015年09月06日 21:18
  • 1432

排序算法之希尔排序--Java语言

希尔排序又叫作缩小增量排序,其实希尔排序是改进版的插入排序,是一个泛化的插入排序。插入排序进行比较的元素是相邻对,因此间隔一直是1,而希尔排序则引入了一个间隔值h,间隔值不能大于等于序列的元素总数,初...
  • carson0408
  • carson0408
  • 2017年11月28日 09:54
  • 442

排序算法(Java语言)——希尔排序

希尔排序Shellsort的名称源于它的发明者Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,直到它最初被发现的若干年后才证明了它的亚二次时间界。它通过比较相距一定间隔的元素...
  • zhang_zp2014
  • zhang_zp2014
  • 2015年08月20日 21:05
  • 449

算法入门---java语言实现的希尔排序小结

标准实现: /** * 希尔排序,是一种改进的插入排序。它是基于插入排序在元素基本有序的情况下效率很高(会中断比较直接返回)这一特性。 * 核心思想:以不同的间隔...
  • zy00000000001
  • zy00000000001
  • 2017年04月08日 11:53
  • 167

数据结构与算法分析(Java语言描述)(4)—— 希尔排序

int n = arr.length; int h = 1; while(h < n/3){ h = h*3 + 1; } while(h >= 1){ for(int i = h; ...
  • HeatDeath
  • HeatDeath
  • 2017年11月02日 23:32
  • 290

Java语言实现六种排序算法

  • 2016年07月15日 11:55
  • 2KB
  • 下载

用java语言写的四种排序算法

  • 2008年12月15日 18:25
  • 11KB
  • 下载

基数排序算法(Java语言)

基数排序算法基本思路: 依次对关键字的第1~N位进行排序,最终所有关键就得到了正确排序。...
  • hhdsyxwei
  • hhdsyxwei
  • 2016年05月28日 18:02
  • 143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:希尔排序算法(Java语言)
举报原因:
原因补充:

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