美文网首页
希尔排序java实现

希尔排序java实现

作者: maylor_zhu | 来源:发表于2016-12-27 12:00 被阅读77次

希尔排序个人感觉还是有一点难度的,当时在理解的时候花了不少时间.
希尔排序这里面有一个叫做"步长"的概念.就是每次通过这些步长找出一组元素,然后对这些元素进行排序.
步长的初始值一般都是数组长度的1/2,然后不断地取其1/2.

代码:

private static void sort(int[] arr,int step){
    for (int i = step; i < arr.length; i++) {
        for (int j = i; j >=step; j-=step) {
            if(arr[j]<arr[j-step]){
                int temp = arr[j];
                arr[j] = arr[j-step];
                arr[j-step]=temp;
            }else{
                break;
            }
        }
    }
}


public static void main(String[] args) {
    int[] arr = new int[]{1,4,2,6,9,6};
    for (int i = arr.length/2; i > 0; i/=2) {
        sort(arr,i);
    }
}

书上的代码:

void shellsort(int[] arr){
    int j;
    for (int gap = arr.length/2; gap >0; gap/=2) {
        for (int i = gap; i < arr.length; i++) {
            int temp=arr[i];
            for(j=i;j>=gap&&temp<arr[j-gap];j-=gap){
                arr[j] = arr[j-gap];
            }
            arr[j]=temp;
        }
    }
}

相关文章

  • (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/ulpxvttx.html