【发布时间】:2016-09-26 21:32:43
【问题描述】:
我正在开展一项活动,在该活动中,我必须确定在一组给定方法中使用哪种排序,我实际上无法查看它,因为它是从仅包含 .class 文件的 .jar 文件运行的。我能看到的只是时间信息(所以我可以根据时间复杂度确定它可能是什么类型)。但是,被排序的元素是随机生成的整数,并且允许重复。为了正确识别排序,我必须以某种方式识别哪些方法没有以稳定的方式排序——无法查看源代码或整数数组。例如,我可以有一个数组 [1,2,3,9,5,64,8,5,1],排序后将是 [1,1,2,3,5,8,9,64] .但是,如果使用类似不稳定选择排序的方法对此进行排序,则两个 1 值将按照彼此的相对顺序进行切换。我如何检测是否发生了这样的事情?
【问题讨论】:
-
“我怎样才能检测到是否发生过这样的事情?”如果您要排序的数组始终是
int[]并且您不能在此方法中提供任何其他类型的数组,我担心您不能。 -
反编译.class
-
您打算如何区分插入排序和冒泡排序?还是介于快速排序和堆排序之间?
-
int[]的排序并不能保证使用稳定的排序,因为没有必要,因为无法区分相等的值。
标签: java arrays sorting stability