繁体   English   中英

排序算法比较

[英]Sorting Algorithms Comparison

我有一个项目,我需要测试3种排序算法,并找出其中的一种是插入排序,冒泡排序,选择排序。 我无法达到这些方法,因此我使用Java中的秒表进行测试。 我创建了3个数组。

int[] arr = new int[100000]; //This array is sorted
int[] randomarr = new int[100000]; //This array is random
int[] reversearr = new int[100000]; //This array is reversed

我测试了这些算法,这是我的结果:

- sort1 

 Sorted array took 11 seconds--Reversed array took 13 seconds--Random array took 24 seconds

- sort2

 Sorted array took 12 second--Reversed array took 12 seconds--Random array took 10 seconds

- sort3

 Sorted array took 1 millisecond--Reversed array took 12 seconds--Random array took 4 seconds

我很确定sort3是插入排序,因为它比Sorted数组中的其他排序更快。 但是我对sort1和sort2感到困惑。 冒泡排序的最佳情况为O(n),插入排序的最佳情况也为O(n),但是当我检查结果时,插入排序的最佳情况为1毫秒,所以冒泡排序的最佳情况也应该为1毫秒? 我如何比较它们?

因此,您显然必须通过检查对各种数组进行排序所花费的时间来确定哪个是哪个。

以下是有关每种算法的一些详细信息(列的最佳,平均,最差,最佳空间);

在此处输入图片说明

因此,您可以通过将大小不同的已排序列表传递给算法,并查看需要多长时间来快速确定哪一个是选择排序。 平方作用的是selection sort

然后,要在bubble sortinsertion sort之间做出决定,您需要更深入地了解算法的工作原理。 bubble sort有一个亲切的问题; 恐龙和乌龟 ,一开始是大元素,但很快就被解决了,但结尾的小元素却没有被有效地处理。 然后,您可以尝试对剩下的两个算法( bubbleinsertion )进行分析,并使用排序后的列表,最后一个元素最小,然后看看它们是如何工作的。 效果更好的一种是插入排序。

如果仅使用这些算法的简单版本对各种大小的数组进行精确的测试,我将得到以下结果:

在此处输入图片说明

因此,根据上述信息,我知道sort1是冒泡排序,sort3是选择排序,sort2是插入排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM