java sort时间复杂度_java.util.Collections.sort()方法的时间复杂度是多少?

这篇博客讨论了使用自定义Comparator对Java List中的对象按角度字段进行排序的方法。排序算法是改良版的归并排序,保证了O(n log n)的时间复杂性。博主在main方法中创建了一个包含‘X’和‘angle’字段的对象列表,并使用Collections.sort()方法结合自定义比较器进行排序。文章强调,只要不修改比较器内的循环行为,排序复杂性不会改变。
摘要由CSDN通过智能技术生成

我写了以下课程:

public class SortingObjectsWithAngleField implements Comparator {

public int compare(Point p1, Point p2) {

double delta = p1.getAngle() - p2.getAngle();

if(delta == 0.00001)

return 0;

return (delta > 0.00001) ? 1 : -1;

}

}

然后,在我的main()方法中,我创建了一个List,我添加了一些具有“X”和“angle”字段的对象.

然后我用:

Collections.sort(list, new SortingObjectsWithAngleField());

这种排序方法的复杂性是什么?

解决方法:

您可以阅读有关集合排序的文档,但这里适合您:

The sorting algorithm is a modified

mergesort (in which the merge is

omitted if the highest element in the

low sublist is less than the lowest

element in the high sublist). This

algorithm offers guaranteed n log(n)

performance.

你的比较器并没有改变这种复杂性,除非你对你的集合中的循环做任何事情,你不这样做.

标签:java,sorting,collections,time-complexity

来源: https://codeday.me/bug/20191001/1838640.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值