2012-12-22 49 views
0

我需要使用自定义排序规则排序大约100000个整数。如果我使用比较器,我需要有一个数组Integer实例,创建速度较慢,排序较慢并占用更多内存。使用自定义排序规则对整数(非整数)数组排序

对Galaxy Nexus的

快速基准测试与Android 4.2:

createIntArrayAndFillWith1to100000; // 18 ms 
createIntegerArrayAndFillWith1to100000; // 191 ms (using Integer.valueOf(i)) 
Arrays.sort(randomInts); // 354 ms 
Arrays.sort(randomIntegers, simpleComparator); // 1734 ms 

是实现自定义排序我最好的选择?

+2

通过自动装箱它会慢多少? – OmniOwl

+0

我觉得不得不问......支持你的应用程序太慢了,还是你不喜欢速度? –

+0

@Vipar我要测试并报告回来:) – fhucho

回答

1

我认为唯一的办法就是对你自己的元素数据类型int实施一个排序算法。 Java库不提供每个元素数据类型的版本。拳击/拆箱就是答案。

我只是简单地为这个特殊的需求实现一个排序算法。 (如果速度真的如此重要) 通过快速排序进行排序很容易实现quicksort (wikipedia)