Java的排序Arrays.sort和Arrays.parallelSort

本文介绍了Java中的两种排序方法:Arrays.sort使用Timsort算法,适合已部分排序的数据,稳定且最坏情况时间复杂度为O(n log n);Arrays.parallelSort利用Fork/Join框架进行并行排序,适用于大数据量,超过一定阈值时性能优于Arrays.sort。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Arrays.sort

Arrays.sort来对原生数组进行排序,这个API会使用归并排序或者Tim排序(  Timsort是结合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法,它在现实中有很好的效率)来进行排序。

  • Timsort的核心过程

1、数组个数小于32的情况使用二分插入排序

2、数组大于32时, 先算出一个合适的大小,在将输入按其升序和降序特点进行了分区。排序的输入的单位不是一个个单独的 数字,而是一个个的块-分区。其中每一个分区叫一个run。针对这些 run 序列,每次拿一个run出来按规则进行合并。每次合并会将两个run合并成一个 run。合并的结果保存到栈中。合并直到消耗掉所有的run,这时将栈上剩余的 run合并到只剩一个 run 为止。这时这个仅剩的 run 便是排好序的结果。

       Timsort是稳定的算法,当待排序的数组中已经有排序好的数,它的时间复杂度会小于nlogn。与其他合并排序一样,Timesort是稳定的排序算法,最坏时间复杂度是O(n log n)。在最坏情况下,Timsort算法需要的临时空间是n/2,在最好情况下,它只需要一个很小的临时存储空间。

  • Arrays.P

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值