什么是重新排序数组的最快方法

时间:2013-10-06 21:41:38

标签: java arrays

JAVA中最快(实时数据处理应用程序)重新排序(新索引总是相同)的方式是什么:

例如为: 我有:     double[] A = new double[] {1, 234, 12,99,0};

我需要迅速得到:     double[] B = new double[] {A[2], A[4], A[0],A[1],A[3]};

但也许这是最有效的方法吗?

非常感谢您的反馈

1 个答案:

答案 0 :(得分:1)

我怀疑你能比你目前的

做得更好
double[] B = new double[] {A[2], A[4], A[0], A[1], A[3]};

其他序列的可能候选人可能是Arrays.copyOfArrays.copyOfRange的形式,但您必须在此处完成的最少工作包括:

  • 创建一个新数组
  • 随机访问数组中的每个元素

使用非常具体的读/写命令(利用缓存行)可能会略微提高一点,一个猜测是完全按顺序读取并按升序写入几乎全部:

   double[] B = new double[A.length];
   B[2] = A[0];
   B[3] = A[1];
   B[4] = A[3];
   B[0] = A[2];
   B[1] = A[4];

但我并没有强烈期望这会明显好转。如果您正试图消除或优化L1 / L2缓存命中,那么就该开始进行微基准测试了,真正的答案是您应该进行实验。