java.util.Arrays.sort方法简单分析
来源:互联网 发布:恒大淘宝足球股价 编辑:程序博客网 时间:2024/05/20 01:39
今天比较仔细的观察了下1.6jdk下的java.util.Arrays.sort方法
稍微总结下:
sort分为对基本数据类型(byte char short int float long double)和object类型的排序
1.对基本数据类型的排序
Arrays类中public方法都是sort,
但里面实际做工作的是sort2和sort1
最实际的工作是sort1
sort2是做一些边界处理的闲杂工作,类似于
几个核心的sort1方法声明:
private static void sort1(long x[], int off, int len)
private static void sort1(int x[], int off, int len)
private static void sort1(short x[], int off, int len)
private static void sort1(char x[], int off, int len)
private static void sort1(byte x[], int off, int len)
private static void sort1(double x[], int off, int len)
private static void sort1(float x[], int off, int len)
实现逻辑基本相同,如果数组的长度小于7,则是最简单的插入排序,否则采用快速排序
由于快速排序在最坏情况下的时间复杂度为O(n^2),故标志元素的选取也是有讲究的,
类似于
中的big arrays部分
2.对object数据类型的排序,主要是采用归并排序
主要实现方法
private static void mergeSort(Object[] src,
Object[] dest,
int low,
int high,
int off)
以及
private static void mergeSort(Object[] src,
Object[] dest,
int low, int high, int off,
Comparator c)
这两个,
在归并过程中如果数组长度小于7,则采用插入排序使数组有序,
否则继续递归归并,完成排序。
- java.util.Arrays.sort方法简单分析
- java.util.ComparableTimSort中的sort()方法简单分析
- 关于java.util.Arrays中的方法分析
- 数组排序 java.util.Arrays类的sort方法
- java 解析java.util.Arrays.sort
- 步步深入:java.util.Arrays.sort
- Arrays的sort方法分析
- java.util.Arrays 静态方法
- java源码分析:Arrays.sort
- java Arrays.sort 源码分析
- java的Arrays.sort(Object[] a)方法源码分析
- Arrays.sort()方法的源码分析
- java.util.Arrays的Fill方法
- java中Arrays.sort()的源码分析
- Java中Arrays.sort排序源码分析
- java.util.Arrays之后,使用Arrays.copyOfRange方法
- Collections中sort()和Arrays中的sort方法分析
- java容器--java.util.Arrays与java.util.Collections类中sort()的用法(转)
- Android 研究之路从这里开始
- 有关SQL 中 exists 与 in
- 嵌入式Linux文件系统及其存储机制分析
- AddressBookUtil的代码
- python获取当前日期前后N天或N月的日期
- java.util.Arrays.sort方法简单分析
- Squireel文档翻译(元方法)
- 二进制的理解
- 获取网站某页面的html信息两种方法
- log4j
- 简述rrdtool文件的创建方法
- How to use isTokenValid
- 两个日期之间计算天数
- __declspec( selectany ) 含义