0
点赞
收藏
分享

微信扫一扫

数据结构-希尔排序 (Java)

晒大太阳了 2022-03-11 阅读 60

算法思想

1、首先选定记录间的距离为d(从数组第一个元素开始起),在整个待排序的记录序列中,将所有间隔为d的记录分成一组,进行组内的插入排序。
2、然后取d = d / 2,再重复1的步骤,直到d = 1,这时只有一个子序列,对该序列进行直接插入排序,完成整个排序过程

代码

import java.util.Arrays;

public class xiersort {
    public static void main(String[] args) {
        int[] arr = {46,55,13,42,94,17,05,70};
        xesort(arr);
        System.out.println(Arrays.toString(arr));

    }

    public static void xesort(int[] arr) {
        //数组的长度
        int len = arr.length;

        //del为步长距离,每次折半,直到为1
        for (int del = len / 2; del > 0; del = del / 2) {
            for (int i = del; i < len; i++) {

                int j = i - del;
                // tem做为一个备份,记录当前值
                int tem = arr[i];
                while (j >= 0 && tem < arr[j]) {
                    // 如果tem比前面值小,则将前面的值后移del长度
                    arr[j + del] = arr[j];
                    j = j - del;
                }
                arr[j + del] = tem;
            }
        }
    }
}

输出结果

在这里插入图片描述

举报

相关推荐

0 条评论