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

2.0 哈希排序 7个常用排序之一

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

2.0 哈希排序 7个常用排序之一

2.哈希排序 ->: 哈希排序 就是分组的插入排序,因为插入排序是 越有序速度越快,所以先分 n 组进行排序,等n组数据都是排成有序时,然后再将 n 组数据 合在一起进行排序,这样速度可以快上很多.  

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        //首先创建一个随机数组
        int[] arr = {5, 2, 1, 3, 6, 0, 4, 8, 9, 7,};
        //new一个Main 对象出来,这样才能借引用,使用对象里的方法
        Main main = new Main();
        //借引用 使用引用所指向对象里的方法
        main.Hill_sorting(arr);
        //Arrays.toString() 是Array类中的一个方法,作用是返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号分开
        System.out.println(Arrays.toString(arr));
    }

    public void Hill_sorting(int[] arr) {//哈希排序
        // arr.length 的意思是arr数组的元素个数, 元素个数 / 2 是将这个数组分组,如果10个元素就分成5组,每组两个元素.
        int group = arr.length / 2;
        //只要组数大于等于 1 就进行排序
        while (group >= 1) {
            // 如果 i >= 数组的元素个数 - 组数 那么 i + group 就会越界
            for (int i = 0; i < arr.length - group; i++) {
                int tmp = arr[i + group];
                int a = i;
                //插入排序
                while (a >= 0 && arr[a] > tmp) {
                    arr[i + group] = arr[a];
                    a -= group;
                }
                arr[a+group] = tmp;
            }
            //上面循环结束 说明 一组分组排序已经结束,但是要进行多组 分组循环才能保证 数组尽量是有序的(插入排序越有序 速度越快),所以除以2 在进行分组循环
            group /= 2;
        }
    }
}

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

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

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