20230407 Arrays.sort

分析以下方法:

  • Arrays#sort(int[])
  • Arrays#sort(Object[] a)

DualPivotQuicksort

  • Arrays#sort(int[]) 使用 DualPivotQuicksort

  • Dual-Pivot Quicksort 是一种快速排序算法的变体

  • Dual-Pivot Quicksort 的主要思想是利用两个枢轴元素将数组分成三个部分,从而提高排序的效率

  • 快速排序不具有稳定性,所以用来对基础类型排序,而对象类型使用的是归并排序

  • DualPivotQuicksort的空间复杂度为O(n log n),需要额外的空间

  • DualPivotQuicksort的时间复杂度为O(n log n)

  • DualPivotQuicksort.sort

    • 数组个数小于286
      • 个数小于47,传统插入排序
      • 个数大于等于47,双轴快速排序
    • 数组个数大于等于286
      • 判断数组是否已经接近有序
        • 不是,使用快速排序
        • 是,使用归并排序

TimSort

  • Arrays#sort(Object[] a) 使用 TimSort
  • TimSort是一种混合了归并排序和插入排序的排序算法
  • 具有稳定性
  • TimSort的空间复杂度为O(n),需要额外的空间
  • TimSort的时间复杂度为O(n log n),最好时间复杂度为O(n)
posted @   流星<。)#)))≦  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示