【发布时间】:2014-11-23 04:15:00
【问题描述】:
Java 中的 collection.sort() 函数有多快?使用了什么算法?我遇到了这个函数in this answer,它按降序对列表进行排序:
public static void main(String arg[])
{
List<Double> testList=new ArrayList();
/*Adding The values to the List*/
testList.add(0.5);
testList.add(0.2);
testList.add(0.9);
testList.add(0.1);
testList.add(0.1);
testList.add(0.1);
testList.add(0.54);
testList.add(0.71);
testList.add(0.71);
testList.add(0.71);
testList.add(0.92);
testList.add(0.12);
testList.add(0.65);
testList.add(0.34);
testList.add(0.62);
/*Declare a new List for storing sorted Results*/
List<Double> finalList=new ArrayList();
while(!testList.isEmpty()) //perform operation until all elements are moved to new List
{
double rank=0;
int i=0;
for(double d: testList)
{
if(d>=rank)
{
rank=d;
}
}
finalList.add(rank);
testList.remove(testList.indexOf(rank));
}
for(double d : finalList) {
System.out.println(d);
}
}
我认为这在 O(n(n-1)) 时间内运行,对于大型列表来说效率很低。我不相信 Collections.sort() 是这样创建的,考虑到它是多么的低效。
【问题讨论】:
标签: java performance algorithm sorting