美文网首页
希尔排序(Java实现)

希尔排序(Java实现)

作者: imroc | 来源:发表于2017-09-03 14:30 被阅读0次

封装成类:

package com.roc.algorithms.sort;

/**
 * 希尔排序
 *
 * @author imroc
 */
public class ShellSort {
    //交换数组元素
    private static void swap(int[] a, int i, int j) {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }

    public static void sort(int[] a) {
        int h = 1;
        while (h < a.length / 3) {//寻找合适的间隔h
            h = 3 * h + 1;
        }
        while (h >= 1) {
            //将数组变为间隔h个元素有序
            for (int i = h; i < a.length; i++) {
                //间隔h插入排序
                for (int j = i; j >= h && a[j] < a[j - h]; j -= h) {
                    swap(a, j, j - h);
                }
            }
            h /= 3;
        }
    }
}

测试:

int[] a = {9,0,6,5,8,2,1,7,4,3};
System.out.println(Arrays.toString(a));
ShellSort.sort(a);
System.out.println(Arrays.toString(a));

输出:
[9, 0, 6, 5, 8, 2, 1, 7, 4, 3]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

相关文章

  • (306)排序-java实现的选择/插入/希尔排序

    引言 用java实现的选择排序、插入排序、希尔排序。 代码(java) 运行结果

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • 希尔排序java实现

    //希尔排序: //基本思想: //在要排序的一组数中,根据某一增量分为若干子序列,并对子序列分别进行插入排序。 ...

  • 希尔排序java实现

    希尔排序个人感觉还是有一点难度的,当时在理解的时候花了不少时间.希尔排序这里面有一个叫做"步长"的概念.就是每次通...

  • 希尔排序(Java实现)

    封装成类: 测试: 输出:[9, 0, 6, 5, 8, 2, 1, 7, 4, 3][0, 1, 2, 3, 4...

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 排序算法(四) 希尔排序(插入排序的进化)

    参考Java排序算法(四):希尔排序常见排序算法 - 希尔排序 (Shell Sort) 希尔排序算法是按其设计者...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 排序算法的实现

    用java对常用内部排序算法的实现。 对冒泡排序,简单选择排序,直接插入排序,希尔排序,归并排序的简单实现(缺少快...

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

网友评论

      本文标题:希尔排序(Java实现)

      本文链接:https://www.haomeiwen.com/subject/slqjjxtx.html