zoukankan      html  css  js  c++  java
  • Java Arrays 排序

    Java SDK中的排序分为两种情况:

    1、对基础类型数组的排序,使用DualPivotQuicksort类
    a、如果是对char、short数组的排序,因为byte、char、short分别为8bit、16bit、16bit,能表示的最大数比较小(2^16):
    所以,对它们的排序策略为数组长度小于32的时候使用直接插入排序、数组长度小于(128、32768)的时候使用快速排序、其他使用计数排序(时间长,需要128或者32768长度的数组辅助)

    b、对于其他几种基础类型的数组排序,因为长度大,不适用计数排序,故策略为:如果数组长度小于32,使用直接插入排序,否则使用快速排序
    2、对于非基础类型的排序,使用ComparableTimSort类
    采用的排序算法为二分插入排序,特点是每次向有序区域插入一个值时,不是逐个向前比较,而是采用二分查找的思路,和中间那个值比较。
    这个能减少查找的次数从N^2到nlogn,但是交换的次数仍然为N^2, 因为它是数组,而不是链表,无法直接插入到那个位置,还是需要找到index之后的元素逐个后移,不过这里可以使用System.arrayCoy的方法,提高性能
  • 相关阅读:
    centos7安装 mysqlclient 报错的解决办法
    linux yum配置代理
    mysql 基础知识
    centos7 安装MySQL
    win安装mysql
    centos7 安装Mariadb
    python socket
    python 协程
    python 线程
    python 进程
  • 原文地址:https://www.cnblogs.com/lipeil/p/5818177.html
Copyright © 2011-2022 走看看