作者前言
大家好,我是阿濠,今篇内容跟大家分享的是排序算法总结和对比,很高兴分享到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
三、我所知道算法系列链接
学习链接:我所知道的排序算法之冒泡排序
学习链接:我所知道的排序算法之选择排序
学习链接:我所知道的排序算法之插入排序
学习链接:我所知道的排序算法之希尔排序
学习链接:我所知道的排序算法之快速排序
学习链接:我所知道的排序算法之归并排序
学习链接:我所知道的排序算法之基数排序
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。