程序员那些必须掌握的排序算法(下) (5)

只需要一秒钟即完成了排序。
我们再测试一下八千万个数据的排序:

public static void main(String[] args) { int[] arr = new int[80000000]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) (Math.random() * 8000000); } Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); String dateStr = format.format(date); System.out.println("排序前的时间是:" + dateStr); raixSort(arr); Date date2 = new Date(); String dateStr2 = format.format(date2); System.out.println("排序前的时间是:" + dateStr2); }

运行结果:

排序前的时间是:17:41:07 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at com.itcast.sort.RadixSortDemo.raixSort(RadixSortDemo.java:42) at com.itcast.sort.RadixSortDemo.main(RadixSortDemo.java:22)

结果为堆内存溢出,所以在对大量数据进行排序的时候,基数排序显然不是一个好的选择,因为提升排序效率的条件是牺牲大量的内存空间,当数据足够多时,内存空间就不够用了。

4.堆排序

本来这篇文章打算介绍四种排序算法,这最后一种便是堆排序,但是写着写着,回过头发现竟然也写了这么多了,考虑到不宜篇幅过长,我打算将堆排序放到后面说,如果你能掌握前面的这七种排序算法并能随时手写出来,也是很了不起了。

本篇文章虽然只介绍了三种排序算法,但这三种排序算法都有一定的难度,想要彻底掌握它们大家还是要多花点心思啊!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdfgf.html