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

Java算法笔记04:希尔排序

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

Java算法笔记04:希尔排序

package SuanFaSort;

public class Shell {

    public static void sort(Comparable[] a){
        //1.根据数组a的长度,确定增长量h的初始值;
        int h=1;
        while (h{//循环的次数
            //修正值(步长值)
            h=2*h+1;
        }
        //2.希尔排序
        while (h>=1){
            //排序
        //2.1找到待插入的元素
            for (int i=h;i;i++){
                //2.2 把待插入的元素
                for (int j=i;j>=h;j-=h){

                    //待插入的元素是a[j],比较a[j]和a[j-h]
                    if (greater(a[j-h],a[j])){
                        //交换元素
                        exch(a,j-h,j);
                    }else{
                        //待插入元素已经找到了合适的位置,结束循环
                        break;
                    }
                }
            }
        //减小h的值
            h=h/2;
        }

    }




    private static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;
    }

    public static void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }

}
package SuanFaSort;

import java.util.Arrays;

public class ShellTest {
    public static void main(String[] args) {
        Integer[] arr={2,3,4,5,6,4,3,5,9,8,7};
        Shell.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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