归并排序

什么是归并排序呢???

官方解释为——归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

简单来说就是先让一组数单个有序,再对相邻两组数进行排序,以此类推…

还是看图吧,就很容易理解啦~~

在这里插入图片描述

代码展示
public class TestMergeSort {

    public static void mergeSort(int[] array){
        for (int i = 1; i < array.length; i*=2) {
            merge(array,i);  //递归调用
        }
    }

    /**
     * @param array
     * @param gap
     * 代表每个归并段的数据个数
     */
    public static void merge(int[] array,int gap){
        int s1 = 0;  //start
        int e1 = s1+gap-1; //end
        int s2 = e1+1; 
        int e2 = s2+gap-1 > array.length-1 ? array.length-1 : s2+gap-1; //如果大于则为array.length-1;不大于则为s2+gap-1
        //空间复杂度为O(n)
        int[] tmpArr = new int[array.length]; //存放排好序的数
        int i = 0;
       
        while (s2 < array.length){ //肯定有两个归并段
            //当两个归并段都有数据的时候
            while (s1 <= e1 && s2 <= e2){
                if (array[s1] < array[s2]){ //s1小的时候
                    tmpArr[i++] = array[s1++];
                }else {
                    tmpArr[i++] = array[s2++];
                }
            }
            while (s1 <= e1){
                tmpArr[i++] = array[s1++];
            }
            while (s2 <= e2){
                tmpArr[i++] = array[s2++];
            }
            //确定新的下标
            s1 = e2+1;
            e1 = s1+gap-1;
            s2 = e1+1;
            e2 = s2+gap-1 > array.length-1 ? array.length-1 : s2+gap-1;
        }
        
        while (s1 < array.length){
            tmpArr[i++] = array[s1++];
        }
        System.arraycopy(tmpArr,0,array,0,tmpArr.length);
    }

    public static void main(String[] args) {
        int[] array = {15,2,35,6,23,11,5};
        mergeSort(array);
        System.out.println(Arrays.toString(array));
    }
}

在这里插入图片描述

数据集介绍:垃圾分类检测数据集 一、基础信息 数据集名称:垃圾分类检测数据集 图片数量: 训练集:2,817张图片 验证集:621张图片 测试集:317张图片 总计:3,755张图片 分类类别: - 金属:常见的金属垃圾材料。 - 纸板:纸板类垃圾,如包装盒等。 - 塑料:塑料类垃圾,如瓶子、容器等。 标注格式: YOLO格式,包含边界框和类别标签,适用于目标检测任务。 数据格式:图片来源于实际场景,格式为常见图像格式(如JPEG/PNG)。 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建能够自动识别和分类垃圾材料的AI模型,用于自动化废物分类和回收系统。 环境监测与废物管理: 集成至监控系统或机器人中,实时检测垃圾并分类,提升废物处理效率和环保水平。 学术研究与教育: 支持计算机视觉与环保领域的交叉研究,用于教学、实验和论文发表。 三、数据集优势 类别覆盖全面: 包含三种常见垃圾材料类别,覆盖日常生活中主要的可回收物类型,具有实际应用价值。 标注精准可靠: 采用YOLO标注格式,边界框定位精确,类别标签准确,便于模型直接训练和使用。 数据量适中合理: 训练集、验证集和测试集分布均衡,提供足够样本用于模型学习和评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,支持垃圾检测相关应用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值