如何在java中执行内存有效的数组排序?

Ste*_*hen 7 java memory sorting algorithm

我想要排序大量的字符串(特别是File.list(),我不能外部化或进一步减少),而不使用[多]额外的内存.

Arrays.sort()说它做了一个合并排序,维基百科说一些实现分配原始数组的大小来存储排序的输出.(这似乎得到System.arraycopy了方法中的参考支持).

是否有一个就地排序算法我可以使用而不是内存效率?

dle*_*lev 6

quicksort是就地而且非常快.看到这里.

  • 所以1000000(文件)的log2n是每次递归的20*2-3个对象大约是100个对象引用的大小,与文件名长度相比相当苍白 (2认同)

Dan*_*ode 5

String在Java中是不可变的.因此,当String你的问题中的s 数组重复时,它们不需要像你期望的那样多的空间.实际上,开销可能非常小.

换句话说,Java Arrays#sort()可以很好地适用于您的解决方案.您可以自己测试性能.

对于你问题的标题,Ankit的答案和dlev的答案都很好.