Java 双精度有理数的最快排序算法

Java 双精度有理数的最快排序算法,java,double,sorting,Java,Double,Sorting,我正在寻找FFT变换后对数字进行排序的最快算法——abs中只有实数。值)=双精度有理数,用于2^19个元素的1d数组。我认为megre排序将是最好的…如果您的问题是关于排序一个双[],那么请使用数组。排序。这是一个快速排序的衍生工具 如果您拥有的是一个表示双精度分数的对象数组,那么该类需要实现Comparable,但同样,您最好使用array.sort(Object[]),它使用timsort(从Java 7开始)。但是要小心,性能就掌握在你的手中:不要只为info数组打乱compareTo的实

我正在寻找FFT变换后对数字进行排序的最快算法——abs中只有实数。值)=双精度有理数,用于2^19个元素的1d数组。我认为megre排序将是最好的…

如果您的问题是关于排序一个
双[]
,那么请使用
数组。排序
。这是一个快速排序的衍生工具


如果您拥有的是一个表示双精度分数的对象数组,那么该类需要实现
Comparable
,但同样,您最好使用
array.sort(Object[])
,它使用timsort(从Java 7开始)。但是要小心,性能就掌握在你的手中:不要只为info
数组打乱
compareTo
的实现

Timsort是一种混合排序算法,源于合并排序和插入排序,设计用于处理多种实际数据。它由Tim Peters在2002年发明,用于Python编程语言。该算法查找已排序的数据子集,并使用这些子集对数据进行更有效的排序。这是通过将已识别的子集(称为运行)与现有运行合并来完成的,直到满足某些条件为止。Timsort自2.3版以来一直是Python的标准排序算法。它现在也用于JavaSE7和Android平台上的数组排序


使用哪种算法与其说取决于要排序的对象类型,不如说取决于它们的混乱程度


有关不同标准算法在不同情况下的执行情况的比较,请参阅。

如果您只是对大约1/2百万个元素进行排序,则有许多选项。无论您使用何种语言,都可以使用标准的排序算法

元素之间似乎会有很好的可变性,但我不确定FFT变换是否会产生包含大量已排序数字的数组。如果是这样,您将希望避免快速排序。我听说蒂姆索特在这方面很在行。

  • 必须选择Arrays.sort()
  • 为Rational对象指定一个索引字段,并在compareTo()中使用它
this.numerator*other.denominator-this.denominator*other.numerator


祝你好运

当你似乎不想花时间自己恰当地阐述你的问题时,你不能期望人们花时间思考你的问题……最快的waz如何使用正定元素/有理元素对数组进行排序,在RAm上不依赖于/元素的数量2^19我认为它很明显,我需要的是1。尝试几种排序算法。2.选择最快的一个。@LukeNumerati一个好的开始是在按“发送”之前重新阅读您的邮件并删除拼写错误。在Oracle JDK 1.6中,它是mergesort,因为1.7是timsort。@thomasjungblut您需要检查您的事实。基本数组使用快速排序进行排序。源代码是免费提供的。确实,
排序算法是一种优化的快速排序
。Java对基本数组使用快速排序。在Java7中为引用类型数组引入timsort的所有宣传中,这个微不足道的事实似乎都被忽略了。@Marko Topolnik——没错。对于基本数据类型。。。排序算法是Vladimir Yaroslavskiy、Jon Bentley和Joshua Bloch提出的双枢轴快速排序算法。该算法在许多数据集上提供O(n log(n))性能,这些数据集会导致其他快速排序降级为二次性能,并且通常比传统(单轴)快速排序实现更快。