`

java算法之希尔排序

 
阅读更多
package com.hym.test.algorithms;

public class ShellSort {
	private int[] arrayTest = { 5, 26, 1, 783, 23, 2, 62, 9, 46 };

	public void shellSort() {
		int begin, end;
		int temp;

		int h = 1;
		while (h <= arrayTest.length / 3) {
			h = 3 * h + 1;
		}

		while (h > 0) {
			for (end = h; end < arrayTest.length; end++) {
				temp = arrayTest[end];
				begin = end;

				while (begin > h - 1 && arrayTest[begin - h] >= temp) {
					arrayTest[begin] = arrayTest[begin - h];
					begin -= h;
				}
				arrayTest[begin] = temp;
			}
			h = (h - 1) / 3;
		}
	}

	public static void main(String[] args) {
		ShellSort sort = new ShellSort();
		sort.shellSort();

		for (int i = 0; i < sort.arrayTest.length; i++) {
			System.out.print(sort.arrayTest[i] + " ");
		}
	}
}



希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。

http://baike.baidu.com/view/178698.htm
分享到:
评论

相关推荐

    分别使用Java和Python实现希尔排序算法

    希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:...

    java算法——希尔排序

    按下标的一定增量分组,对每组使用直接插入算法排序;随着增量 * 逐渐减少,每组包含的关键字越来越多,当增量减至1时,整个文件恰 * 好被分成一组,算法便终止。 * 8,9,1,7,2,3,5,4,6,0 * //初始增量 gap=...

    算法可视化系列——排序算法——希尔排序

    在`AlgorithmShellSort.java`这个文件中,我们可以预期看到希尔排序的具体实现。通常,Java代码会包含一个名为`shellSort()`的函数,它接收一个整数数组作为参数,并对其进行希尔排序。以下是希尔排序的基本步骤: ...

    [Java算法-排序]希尔排序.java

    该资源提供了一份全面的指南,介绍了如何在Java中实现希尔排序。文档中涵盖了希尔排序的基本概念,包括如何对数组进行排序以及如何在Java中实现希尔排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现希尔...

    java 算法之希尔排序详解及实现代码

    希尔排序(Shell Sort)是一种基于插入排序的快速改进算法,由Donald Shell在1959年提出。它的主要思想是通过设定一个间隔序列(通常以1结尾),将待排序的数组分为多个子序列,然后对每个子序列进行插入排序。随着...

    详解Java常用排序算法-希尔排序

    希尔排序算法详解 希尔排序(Shell Sort)是一种改进的插入排序算法,它的基本思想是将待排序的数组按照一定的间隔进行分组,对每组使用插入排序算法进行排序,然后缩小间隔,再对分组进行排序,直到间隔为1 为止。...

    希尔排序java代码

    希尔排序(Shell Sort)是一种基于插入排序的快速排序算法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的增量分组,对每组使用直接插入排序,然后逐渐减小增量,继续进行分组排序,直到增量...

    希尔排序(java)

    希尔排序(Shell Sort)是一种基于插入排序的快速排序算法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一个增量序列分成若干个子序列,然后分别对子序列进行插入排序,最后再进行一次整体的插入...

    希尔排序算法Java简单解释

    希尔排序是一种比较实用的排序算法,虽然它不是稳定的排序算法(即相等的元素可能会改变原有的相对顺序),但其效率在许多情况下优于其他简单的排序算法,特别是在处理大规模数据时。在编程实践中,理解并掌握希尔...

    各种排序算法比较(java实现)

    本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...

    Java实现希尔排序算法(源代码)

    ### Java实现希尔排序算法 #### 实现原理 希尔排序(Shell Sort)是插入排序的一种高效改进版本,也称为缩小增量排序。它的基本思想是:先将整个待排序的记录序列分割成为若干子序列(由相隔某个“增量”的记录...

    JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

    本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...

    排序算法,希尔排序 插入排序 冒泡排序

    该源文件包括三种排序算法,实现效率教高,代码量也不大

    常用的排序算法(java实现),附带一个PPT动画演示、详解了其中三种

    这里我们主要关注Java实现的排序算法,并结合一个PPT的动画演示来探讨其中的插入排序、直接插入排序和希尔排序。 首先,让我们深入理解插入排序。插入排序是一种简单的排序算法,其基本思想是将未排序的元素逐个...

    Java经典排序算法之希尔排序详解

    希尔排序(Shell Sort)是一种基于插入排序的高效排序算法,由Donald Shell于1959年提出。它的核心思想是通过设置一系列的增量序列来逐步减少元素间的距离,从而优化插入排序的过程。希尔排序的基本步骤如下: 1. **...

    java版冒泡排序,插入排序,堆排序,快速排序,归并排序,希尔排序,桶排序

    希尔排序是插入排序的一种优化版本,通过设定一个增量序列,将待排序的数组按照增量分成多个子序列,对每个子序列进行插入排序,最后减小增量,直至为1,整个数组有序。这种方法减少了元素移动的次数,提高了排序...

    Java语言实现六种排序算法

    本文将详述Java语言实现的六种经典排序算法:冒泡排序、选择排序、插入排序、归并排序、希尔排序以及快速排序。这些排序算法各有特点,适用于不同的场景。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序...

    (希尔排序算法).doc计算机系算法分析

    在Java编程环境下,使用Eclipse开发工具,实验者编写了一个简单的希尔排序程序。代码中,首先定义了一个整型数组`a`,然后设置初始间隔`h`为1,并通过一个while循环不断更新间隔值,直至间隔为0。在每次间隔调整后,...

    Java算法集锦,所有排序算法

    7. **希尔排序**(Shell Sort):希尔排序是插入排序的优化版本,通过设置不同的间隔序列来减少元素的交换次数,从而提高效率。其时间复杂度取决于间隔序列的选择,通常介于O(n)和O(n²)之间。 8. **计数排序**...

Global site tag (gtag.js) - Google Analytics