Java Arrays 排序
2023-09-27 14:29:19 时间
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的方法,提高性能
相关文章
- 开源 免费 java CMS - FreeCMS1.9 会员权限管理
- 算法(第四版)学习笔记之java实现希尔排序
- Java中对数组的排序方法总汇分析
- Arrays.sort.Collections.sort 排序出现的java.lang.IllegalArgumentException的异常
- 深入理解Java内存模型(二)——重排序
- java根据key或value对Map进行排序
- java实现归并排序
- java输出乱码专题
- 基于Java+Mysql实现(CS界面)学生成绩管理系统【100010002】
- java jjwt-api使用,java jwt使用,java jwt 工具类
- java TreeSet的排序之自然排序
- Java 集合排序策略接口 Comparator
- JAVA中string.replace()和string.replaceAll()的区别及用法
- Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms
- java字符串数组排序
- Java并发框架——什么是AQS框架
- Java常用的八种排序算法
- Java 7之集合类型 - 二叉排序树、平衡树、红黑树---转
- 【java排序】:基本的三种排序方法(冒泡、插入、选择)
- Java多线程基础(一)---线程安全(synchronized 反编译深入分析,JConsole监控进程运行,程序死锁信息打印)
- Java关键字final学习(变量、方法、类,final域重排序语义介绍)
- Java排序算法(七)堆排序
- 排序算法全家桶(Java实现)