归并排序执行速度测试
我们先创建一个长度为8000000的随机值数组,通过对这个随机值数组的排序来测试我们的归并排序算法的执行速度(代码如下:)
package com.ffyc.util.arraysortspeedtest;
import com.ffyc.util.ArraySort;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MargeSortSpeedTest {
public static void main(String[] args) {
int [] arr = new int[8000000];
for (int i = 0; i < 8000000; i++) {
arr[i] = (int)(Math.random()*8000000);
}
int [] temp = new int[arr.length];
Date date1 = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str = sdf.format(date1);
System.out.println("排序前的时间是: " + date1Str);
ArraySort.margeSort(arr,0,arr.length-1,temp);
Date date2 = new Date();
String date2Str = sdf.format(date2);
System.out.println("排序后的时间是: " + date2Str);
}
}
- 我们的归并排序算法执行长度为8000000的随机值数组的排序使用的时间大概是1-2秒,和我们的快速排序的速度差不多
- 其实我还测试了执行长度为八千万的随机值数组的排序,归并排序和快速排序使用的时间也都大概是13秒
- 所以说我们的归并排序执行速度其实是和快速排序差不多的
结论: 归并排序 和 快速排序 > 希尔排序 > 直接插入排序 > 选择排序 > 冒泡排序