我所知道的排序算法之常用对比

Java基础

浏览数:30

2020-6-15

AD:资源代下载服务

作者前言

大家好,我是阿濠,今篇内容跟大家分享的是排序算法总结和对比,很高兴分享到segmentfault与大家一起学习交流,初次见面请大家多多关照,一起学习进步.

一、常用排序算法对比

常用相关术语解释

常用算法对比图

二、常用排序算法的时间测试

我们使用不同的算法大量数据进行时间测试,看看它们之间的对比

备注:经小编的电脑测试,该以下算法可对三十万数据的数组进行时间测试

冒泡排序所用时间

//创建要给300000个的随机的数组
int[] arr = new int[300000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 300000); //生成-个[0,8000000) 数
}
int temp[]=new int[arr.length];
BubbleSort(arr);

运行结果如下:
排序前的时间是:2020-04-16 8:11:12
排序完的时间是:2020-04-16 8:14:25

选择排序所用时间

//创建要给300000个的随机的数组
int[] arr = new int[300000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 300000); //生成-个[0,8000000) 数
}
int temp[]=new int[arr.length];
SelectSort(arr);

运行结果如下:
排序前的时间是:2020-04-16 8:18:23
排序完的时间是:2020-04-16 8:19:08

插入排序所用时间

//创建要给100000个的随机的数组
int[] arr = new int[300000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 300000); //生成-个[0,300000) 数
}
int temp[]=new int[arr.length];
InterSort(arr);

运行结果如下:
排序前的时间是:2020-04-16 8:24:26
排序完的时间是:2020-04-16 8:24:43

备注:经小编的电脑测试,该以下算法可对八百万数据的数组进行时间测试

希尔排序所用时间

//创建要给100000个的随机的数组
int[] arr = new int[8000000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 8000000); //生成-个[0,8000000) 数
}
int temp[]=new int[arr.length];
ShellSort(arr);

运行结果如下:
排序前的时间是:2020-04-16 8:35:26
排序完的时间是:2020-04-16 8:35:32

快速排序所用时间

//创建要给100000个的随机的数组
int[] arr = new int[8000000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 8000000); //生成-个[0,8000000) 数
}
int temp[]=new int[arr.length];
System.out.println("排序前的时间是:" + printDate());
QuickSort(arr,0,arr.length-1);
System.out.println("排序完的时间是:" + printDate());

运行结果如下:
排序前的时间是:2020-04-16 8:38:52
排序完的时间是:2020-04-16 8:38:55

归并排序所用时间

//创建要给100000个的随机的数组
int[] arr = new int[8000000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 8000000); //生成-个[0,8000000) 数
}
int temp[]=new int[arr.length];
System.out.println("排序前的时间是:" + printDate());
MergetSort(arr,0,arr.length-1,temp);
System.out.println("排序完的时间是:" + printDate());

运行结果如下:
排序前的时间是:2020-04-16 8:46:50
排序完的时间是:2020-04-16 8:46:52

基数排序所用时间

//创建要给100000个的随机的数组
int[] arr = new int[8000000];
for (int i = 0; i <arr.length; i++) {
    arr[i] = (int) (Math.random() * 8000000); //生成-个[0,8000000) 数
}
RadixSort(arr);

运行结果如下:
排序前的时间是:2020-04-16 8:52:28
排序完的时间是:2020-04-16 8:52:29

三、我所知道算法系列链接

学习链接:我所知道的排序算法之冒泡排序

学习链接:我所知道的排序算法之选择排序

学习链接:我所知道的排序算法之插入排序

学习链接:我所知道的排序算法之希尔排序

学习链接:我所知道的排序算法之快速排序

学习链接:我所知道的排序算法之归并排序

学习链接:我所知道的排序算法之基数排序

作者:28640