栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 希尔排序

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 希尔排序

希尔排序 1.实现过程

希尔排序,是按照缩量进行分割元素,然后对分割的元素进行比较,具体可以看下方的排序过程。

2.排序过程

第一趟排序

序列中11个元素,按照二分法划分,11/2 向下取整为 5,划分为两个部分,对两个部分进行两两比较,如:49和13,38和27进行比较,交换位置,然后得出了第一趟排序,13,27,49,55,4,49,38,65,97,76,91。

第二趟排序

第二趟排序,因为划分为两部分,按照二分法继续划分,5/2 向下取整 为2,然后对元素进行比较,13,49,4,38,97,91比较并排序,27,55,49,65,76比较并排序,交换位置,得到4,27,13,49,38,55,49,65,91,76,97。

第三趟排序

第三趟排序,继续使用二分法进行划分 2/2 向下取整为 1,进行元素的比较最终得出排序结果。

3.实现代码
public class ShellSort {

    public static void main(String[] args) {
        int data[] = new int[]{49, 38, 65, 97, 76, 13, 27, 49, 55, 4, 91};

        int temp;
        int a = 0;
        for (int gap = data.length/2; gap > 0; gap/=2){
            for (int i = gap; i < data.length; i++){
                temp = data[i];
                int j;
                for (j = i; j >= gap && data[j-gap] > temp;j-=gap){
                    data[j] = data[j-gap];
                }
                data[j] = temp;
            }
            a++;
            System.out.format("第 %d 趟: t", a);
            printPart(data, 0, data.length - 1);
        }
    }

    // 打印序列
    static void printPart(int[] list, int begin, int end) {
        for (int i = 0; i < begin; i++) {
            System.out.print("t");
        }
        for (int i = begin; i <= end; i++) {
            System.out.print(list[i] + "t");
        }
        System.out.println();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号