博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
希尔排序
阅读量:4230 次
发布时间:2019-05-26

本文共 709 字,大约阅读时间需要 2 分钟。

希尔排序就是把原来的插入排序分成各种小组,小组类排序,然后小组的数量变少,再排序,知道小组的数量为1

假设第一次排序的组数是数组长度的一般,第二次是1/4、、、如此,直到1

public class Shellsort {

    public static <AnyType extends Comparable<? super AnyType>>
        void shellsort(AnyType[] a){
        int j;
        for(int gap=a.length/2;gap>0;gap/=2){//每组的长度
            for(int i=gap;i<a.length;i++){//对于所有gap到length-1间的数据,都要进行插入排序,但是只是
                AnyType tmp=a[i];        //该组内部的插入排序
                //对于gap到length-1之间的元素,进行插入排序的过程
                for(j=i;j>=gap&&tmp.compareTo(a[j-gap])<0;j-=gap){
                    a[j]=a[j-gap];
                }
                a[j]=tmp;
            }
        }
    }
}

测试:

    public static void main(String[] args) {

        // TODO Auto-generated method stub
        Integer[] nums=new Integer[]{1,5,1,6,2,7,3,5,2,8,3,4};
        Shellsort.shellsort(nums);
        for(Integer num:nums){
            System.out.print(num+" ");
        }

效果:

1 1 2 2 3 3 4 5 5 6 7 8

转载地址:http://utjqi.baihongyu.com/

你可能感兴趣的文章
剑指Offer——栈的压入、弹出顺序
查看>>
剑指Offer——从上到下打印二叉树
查看>>
剑指Offer——字符串的排列
查看>>
剑指Offer——把数组排成最小的数
查看>>
剑指Offer——丑数
查看>>
剑指Offer——字符串中第一个只出现一次的字符
查看>>
Linux 中的硬链接与软连接有什么区别
查看>>
Python 图像处理库
查看>>
使用PHPMailer-master发送邮件
查看>>
利用smtp协议实现命令行发送邮件
查看>>
利用php的mail()函数发送邮件
查看>>
(一).postman学习——前期知识准备
查看>>
qt入门级使用
查看>>
Web Stotage——本地储存详解及案例
查看>>
File Reader文件操作
查看>>
地理位置服务——navigator.geolocation
查看>>
地理位置服务——百度地图API
查看>>
js拖放事件详解及实战
查看>>
js字符串常用属性与方法
查看>>
C++递归算法案例
查看>>