我正在寻找在FFT变换后对数字进行排序的最快算法 - 只有abs中的实数。 value)=双精度的有理数,对于2 ^ 19个元素的1d数组。我认为这种排序最好......
答案 0 :(得分:2)
如果您的问题是关于排序double[]
,请使用Arrays.sort
。这是一个快速导航。
如果你拥有的是一个表示双精度分数的对象数组,那么该类需要实现Comparable
,但是Arrays.sort(Object[])
将最好地服务,它使用timsort(从Java 7开始)。但要小心,表现就在你手中:不要搞砸compareTo
的实施。
答案 1 :(得分:0)
仅供Java7中的信息Arrays.sort
使用Timsort:
Timsort是一种混合排序算法,源自合并排序和插入排序,旨在很好地处理多种真实数据。它是由Tim Peters在2002年发明的,用于Python编程语言。该算法查找已经排序的数据的子集,并使用子集更有效地对数据进行排序。这是通过将已识别的子集(称为运行)与现有运行合并直到满足某些标准来完成的。从版本2.3开始,Timsort一直是Python的标准排序算法。它现在也用于在Java SE 7和Android平台上对数组进行排序。
答案 2 :(得分:0)
使用什么算法不仅取决于您要排序的对象类型,而取决于它们是如何混乱的。
请参阅http://www.sorting-algorithms.com/,了解不同标准算法在不同情况下的表现。
答案 3 :(得分:0)
如果您只是排序~1 / 200万个元素,那么您有很多选择。您可以使用您使用的任何语言包含的标准排序算法。
似乎元素之间会有很好的可变性,但我不确定FFT转换是否会生成具有大量已排序数字的数组。如果是这样,你会想要避免Quicksort。我听说Timsort非常擅长这种事情。
答案 4 :(得分:0)
祝你好运!this.numerator * other.denominator - this.denominator * other.numerator