前面我们写了常见的几种排序算法,并分析了各种算法的实现思想,及时间复杂度等情况,但由于只是分析,木有实际的数据做对比测试,所以对各个算法的效率也没有一个明确的概念,下面我们就通过具体的测试来看看同算法之间的效率差距。

声明11个长度为100的元素取值范围为0到1000的序列


 
int length = 100;
int[] testArray1 = new int[length];
int[] testArray2 = new int[length];
int[] testArray3 = new int[length];
int[] testArray4 = new int[length];
int[] testArray5 = new int[length];
int[] testArray6 = new int[length];
int[] testArray7 = new int[length];
int[] testArray8 = new int[length];
int[] testArray9 = new int[length];
int[] testArray10 = new int[length];
int[] testArray11 = new int[length];
Random random = new Random();

for (int i = 0; i < length; i++)
{
    int temp = random.Next(0,1000);
    testArray1[i] = temp;
    testArray2[i] = temp;
    testArray3[i] = temp;
    testArray4[i] = temp;
    testArray5[i] = temp;
    testArray6[i] = temp;
    testArray7[i] = temp;
    testArray8[i] = temp;
    testArray9[i] = temp;
    testArray10[i] = temp;
    testArray11[i] = temp;
}

运行测试,测试结果截图:

1

乍一看,几种算法之间效率好像木有差别,设置前几种时间复杂度比较高的算法还要快一点。别急,让我们增加序列中的元素数量再试一下,把length =100改为length =1000再次运行测试,结果截图:

2

结果已经可以看出,时间复杂度低的算法是领先的,但效果好像不太明显。让我们把把length =1000改为length =10000再次运行测试,测试结果截图:

3

这次测试结果已经有了质的改变,相信通过测试大家对不同时间复杂度算法之间的效率已经有了一个清晰的概念。

转载于:https://www.cnblogs.com/liukemng/p/3724099.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐