`
xuelianbobo
  • 浏览: 174877 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java希尔排序

 
阅读更多
/**
 * 希尔排序
 * 就是将源序列按照步长分组,然后对子序列进行插入排序,逐渐减少步长直至步长为1
 * 
 * @author bobo
 * 
 */
public class ShellSort {
	public static void main(String[] args) {
		int[] a = { 7, 6, 5, 4, 3, 2, 1 };
		show(a);
		sheelSort(a, 3);
		show(a);
		sheelSort(a, 1);
		show(a);
	}

	/**
	 * 希尔排序核心算法
	 * 
	 * @param a
	 * @param dk
	 *            步长
	 */
	private static void sheelSort(int[] a, int dk) {
		// 分组数量等于步长数
		for (int i = 0; i < dk; i++) {
			for (int j = i; j < a.length; j = j + dk) {
				System.out.print(a[j] + " ");
			}
			System.out.println();
			for (int j = i; j < a.length; j = j + dk) {
				if (j >= dk) {
					for (int n = i; n < j; n = n + dk) {
						if (a[j] < a[n]) {
							int temp = a[j];
							for (int k = j; k > n; k = k - dk) {
								a[k] = a[k - dk];
							}
							a[n] = temp;
						}
					}
				}
			}
			// 显示一组排完之后的数据
			System.out.println("\n排序后");
			for (int j = i; j < a.length; j = j + dk) {
				System.out.print(a[j] + " ");
			}
			System.out.println();
		}

	}

	private static void show(int[] a) {
		// TODO Auto-generated method stub
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println();
	}
}

 

 

分享到:
评论

相关推荐

    Java 希尔排序 算法 数据结构 数组 输出

    Java 希尔排序 算法 数据结构 数组 输出

    希尔排序(java)

    在Java中,希尔排序的实现通常包括以下几个关键步骤: 1. **增量序列的选择**:希尔排序的效率很大程度上取决于增量序列的选择。经典的增量序列是Hibbard序列、Sedgewick序列或Knuth序列。例如,可以使用Hibbard...

    希尔排序java代码

    Java代码实现希尔排序的过程通常包括以下步骤: 1. 定义增量序列:首先定义一个增量序列,例如初始值为n/2,然后每次减半,直到增量为1。 2. 分组排序:对于每个增量,将数组分为若干个子序列,每个子序列包含增量...

    Java实现希尔排序.rar

    以下是一个简单的Java希尔排序代码示例: ```java public class ShellSort { public static void shellSort(int[] arr) { int len = arr.length; int gap = len / 2; while (gap &gt; 0) { for (int i = gap; i ...

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

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

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

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

    希尔排序算法Java简单解释

    在Java中实现希尔排序,我们可以定义一个希尔排序的函数,接受一个整型数组作为参数,然后按照上述步骤进行排序。代码如下: ```java public class ShellSort { public static void sort(int[] arr) { int len = ...

    java代码-java 希尔排序 三分之一加一

    在"java代码-java 希尔排序 三分之一加一"的场景中,"三分之一加一"可能是希尔排序的一种特定间隔序列选择策略。通常,希尔排序的间隔序列可以有很多选择,如Hibbard序列、Sedgewick序列、Cocke序列等,而"三分之一...

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

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

    希尔排序java.zip

    在Java中,希尔排序可以通过定义一个希尔排序方法,接收一个整型数组作为参数,然后根据上述步骤实现排序。具体代码如下(使用Sedgewick增量序列): ```java public class ShellSort { public static void shell...

    Java 插入排序之希尔排序的实例

    在Java中实现希尔排序,通常包含以下步骤: 1. **初始化间隔**:首先,设置一个初始间隔`dataLength`,通常是待排序数组长度的一半。这是因为较大的间隔可以在较早阶段进行较大的跳跃,从而减少比较次数。 2. **...

    希尔排序。java

    希尔排序代码,其中是希尔排序的代码部分,又不知道的可以进来看一下

    希尔排序基本思想

    5. 实现方式:希尔排序可以使用各种编程语言实现,如C、C++、Java等。在C语言中,可以通过编写函数来实现希尔排序,主要涉及到数组的操作和循环控制。 6. 应用场景:希尔排序适用于需要快速排序但对稳定性要求不高...

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

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

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

    在 Java 中,希尔排序可以使用以下代码实现: ```java public class Shell { public static void shellSort(int[] arr) { int n = arr.length; for (int gap = n / 2; gap &gt; 0; gap /= 2) { for (int i = gap; ...

    希尔排序java.java

    希尔排序

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

    以下是希尔排序的Java实现代码解析: ```java public class Shell extends Sort { // 主方法,用于测试 public static void main(String[] args) { String[] a = { "d", "a", "w", "b", "q" }; Shell.sort(a); ...

    java算法——希尔排序

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

Global site tag (gtag.js) - Google Analytics