标签: java algorithm sorting memory
我想在不使用[多]额外内存的情况下对大量字符串(特别是File.list())进行排序,我无法将其外化或进一步减少。
File.list()
Arrays.sort()表示它进行了合并排序,并且wikipedia说某些实现分配原始数组的大小来存储排序的输出。 (这似乎得到了方法中System.arraycopy引用的支持。)
Arrays.sort()
System.arraycopy
是否存在可以使用的就地排序算法,这种算法对内存有效吗?
答案 0 :(得分:6)
答案 1 :(得分:5)
String在Java中是不可变的。因此,当您的问题中String的数组重复时,它们不需要像您期望的那样多的空间。实际上,开销可能非常小。
String
换句话说,Java的Arrays#sort()可以很好地解决您的问题。您可以自己测试一下表现。
Arrays#sort()
对于问题的标题,Ankit的答案和dlev的答案都很好。
答案 2 :(得分:1)
您可以为就地排序编写堆排序算法。