快速排序算法的速度测试
我们创建一个长度为8000000的随机值数组,通过对这个随机值数组的排序的过程来分析我们的快速排序的执行速度(代码如下:)
package com.ffyc.util.arraysortspeedtest;
import com.ffyc.util.ArraySort;
import java.text.SimpleDateFormat;
import java.util.Date;
public class QuickSortSpeedTest {
public static void main(String[] args) {
//创建一个长度为8000000的数组
int arr[] = new int[8000000];
//给数组中赋上随机值
for(int i = 0; i<8000000; i++){
arr[i] = (int)(Math.random()*8000000);
}
//生成一个数组排序前的Date对象
Date date1 = new Date();//默认是创建当前时间下的Date对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str = sdf.format(date1);
System.out.println("排序前的时间是: " + date1Str);
//调用我们的快速排序算法
ArraySort.quickSort(arr,0,arr.length-1);
//生成一个数组排序后的Date类的对象
Date date2 = new Date();
String date2Str = sdf.format(date2);
System.out.println("排序后的时间是: " + date2Str);
}
}
- 我们执行快速排序算法对8000000长度的随机值数组的排序大概需要: 1 -2 秒左右的时间
快速排序算法和希尔排序和直接插入排序和选择排序和冒泡排序算法的算法效率比较:
- 我们的快速排序的时间复杂度和希尔排序的时间复杂度都是O(n logn),而直接插入排序和选择排序和冒泡排序算法的时间复杂度都是O(n2)
一般情况之下:
快速排序 > 希尔排序 > 直接插入排序 > 选择排序 > 冒泡排序