/** * 希尔排序 * 就是将源序列按照步长分组,然后对子序列进行插入排序,逐渐减少步长直至步长为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中,希尔排序的实现通常包括以下几个关键步骤: 1. **增量序列的选择**:希尔排序的效率很大程度上取决于增量序列的选择。经典的增量序列是Hibbard序列、Sedgewick序列或Knuth序列。例如,可以使用Hibbard...
Java代码实现希尔排序的过程通常包括以下步骤: 1. 定义增量序列:首先定义一个增量序列,例如初始值为n/2,然后每次减半,直到增量为1。 2. 分组排序:对于每个增量,将数组分为若干个子序列,每个子序列包含增量...
以下是一个简单的Java希尔排序代码示例: ```java public class ShellSort { public static void shellSort(int[] arr) { int len = arr.length; int gap = len / 2; while (gap > 0) { for (int i = gap; i ...
希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:分别使用Java和Python实现希尔排序算法 希尔排序:...
在`AlgorithmShellSort.java`这个文件中,我们可以预期看到希尔排序的具体实现。通常,Java代码会包含一个名为`shellSort()`的函数,它接收一个整数数组作为参数,并对其进行希尔排序。以下是希尔排序的基本步骤: ...
在Java中实现希尔排序,我们可以定义一个希尔排序的函数,接受一个整型数组作为参数,然后按照上述步骤进行排序。代码如下: ```java public class ShellSort { public static void sort(int[] arr) { int len = ...
在"java代码-java 希尔排序 三分之一加一"的场景中,"三分之一加一"可能是希尔排序的一种特定间隔序列选择策略。通常,希尔排序的间隔序列可以有很多选择,如Hibbard序列、Sedgewick序列、Cocke序列等,而"三分之一...
该资源提供了一份全面的指南,介绍了如何在Java中实现希尔排序。文档中涵盖了希尔排序的基本概念,包括如何对数组进行排序以及如何在Java中实现希尔排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现希尔...
在Java中,希尔排序可以通过定义一个希尔排序方法,接收一个整型数组作为参数,然后根据上述步骤实现排序。具体代码如下(使用Sedgewick增量序列): ```java public class ShellSort { public static void shell...
在Java中实现希尔排序,通常包含以下步骤: 1. **初始化间隔**:首先,设置一个初始间隔`dataLength`,通常是待排序数组长度的一半。这是因为较大的间隔可以在较早阶段进行较大的跳跃,从而减少比较次数。 2. **...
希尔排序代码,其中是希尔排序的代码部分,又不知道的可以进来看一下
5. 实现方式:希尔排序可以使用各种编程语言实现,如C、C++、Java等。在C语言中,可以通过编写函数来实现希尔排序,主要涉及到数组的操作和循环控制。 6. 应用场景:希尔排序适用于需要快速排序但对稳定性要求不高...
希尔排序是插入排序的一种优化版本,通过设定一个增量序列,将待排序的数组按照增量分成多个子序列,对每个子序列进行插入排序,最后减小增量,直至为1,整个数组有序。这种方法减少了元素移动的次数,提高了排序...
在 Java 中,希尔排序可以使用以下代码实现: ```java public class Shell { public static void shellSort(int[] arr) { int n = arr.length; for (int gap = n / 2; gap > 0; gap /= 2) { for (int i = gap; ...
希尔排序
以下是希尔排序的Java实现代码解析: ```java public class Shell extends Sort { // 主方法,用于测试 public static void main(String[] args) { String[] a = { "d", "a", "w", "b", "q" }; Shell.sort(a); ...
按下标的一定增量分组,对每组使用直接插入算法排序;随着增量 * 逐渐减少,每组包含的关键字越来越多,当增量减至1时,整个文件恰 * 好被分成一组,算法便终止。 * 8,9,1,7,2,3,5,4,6,0 * //初始增量 gap=...