【Java】七大基础排序算法-效率测试

本文通过测试程序对比分析了冒泡排序、选择排序、插入排序、折半插入排序、堆排序、希尔排序、归并排序、随机快排和三路快排等算法在处理不同规模和类型数据时的效率,揭示了各种排序算法在实际应用中的性能差异。
摘要由CSDN通过智能技术生成

【Java】七大基础排序算法-效率测试


前言

这些排序算法到底有什么差别?出于好奇,所以进行了本次测试。
前面几篇文章总结了七大排序的原理、写法以及优化方法,这篇文章我将利用一个简单的测试程序来对这些排序算法的效率进行一个对比测试。其中排序算法和测试程序都总结在往期文章里。🚀


一、测试对象

⚠️点击小火箭查看程序的具体实现

🚀冒泡排序(bubbleSort)
🚀基础选择排序(selectionSort)
🚀双向选择排序(selectionSortBP)
🚀基础插入排序(insertionShort)
🚀折半插入排序(insertionShortHalf)
🚀堆排序(heapSort)
🚀希尔排序(shellSort)
🚀归并排序(mergeSort)
🚀随机快排(quickSort1)
🚀三路快排(quickSort3)


二、测试程序与数据

⚠️点击小火箭查看程序具体实现🚀

        //n表示需要生成的数组长度
        int n = 1000;
        //生成一个长度为n的近乎有序数组 times的值越小数组越有序
        //times==0 表示生成的就是一个有序数组
        int[] arr1 = Helper.generateSoredArray(n, 5);
        //生成一个长度为n的随机且无大量重复值的数组
        int[] arr2 = Helper.generateRandomArray(n, 0, Integer.MAX_VALUE);
        //生成一个长度为n的随机且含大量重复值的数组 [left,right)区间越小重复值越多
        //若区间为[0,1),则生成值全为0的数组
        int[] arr3 = Helper.generateRandomArray(n, 0, 5);

⚠️通过改变测试程序里的参数,可以生成不同形式和规模的数据,以便我们更全面的测试

使用以下三种数据形式作为测试用例:
	1. 近乎有序的数组;
	2. 随机且不含大量重复值数组
	3. 随机且包含大量重复值数组
本次测试数据规模选取比较极端

三、测试过程

🔵一共测试了10组数组,每一轮测试都给出了排名表,对比结果非常直观

1️⃣数组长度为 1千

数据初始化:

        //数组长度n
        int n = 1000;
        //生成一个近乎有序数组,times的值越小,数组越有序
        int[] arr1 = Helper.generateSoredArray(n, 3);
        //生成一个随机且无大量重复值的数组
        int[] arr2 = Helper.generateRandomArray(n, 0, Integer.MAX_VALUE);
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值