Java Arrays.sort()

Java中的数组排序函数,

头文件

import java.util.Arrays;

相关API
Arrays.sort(arys[])
Arrays.sort(arys[],int from,int to) //排序范围:from-->to-1
Arrays.sort(arys[],new MyComparator())
Arrays.sort(arys[],int from,int to,new MyComparator())
sort重载
例如存在定义
private static class node{
int x,y;
};

可以利用Comparator接口实现不同的排序效果

//将x从大到小排,如果相同,就将y从大到小排
private static class cmp1 implements Comparator<node>{
@Override
public int compare(node a,node b){
if(a.x == b.x){
if(a.y==b.y) return 0;
return a.y<b.y?1:-1;
}
if(a.x==b.x) return 0;
return a.x<b.x?1:-1;
}
}
//将x从小到大排,如果相同,就将y从小到大排
private static class cmp2 implements Comparator<node>{
@Override
public int compare(node a,node b){
if(a.x == b.x){
if(a.y==b.y) return 0;
return a.y>b.y?1:-1;
}
if(a.x==b.x) return 0;
return a.x>b.x?1:-1;
}
}
相关的实现原理,可以这么理解:
Arrays中封装的sort函数默认是从小到大排序的,我们在cmp1中在a.y<b.y时返回1,a.y>b.y>时返回-1。
使得程序认为y值越小代表这个node对象越大,而程序是默认把对象大的放在数组>后面,此时它把小的当成了大的,因此我们实现了数组的从大到小的排序。
sort的时间复杂度

Arrays.sort()使用了归并排序算法,时间复杂度为O(nlogn)

练习:

一道贪心题,需要用到排序:http://www.cnblogs.com/zsyacm666666/p/6656859.html

Java Arrays.sort相关用法与重载的更多相关文章

  1. Java Arrays.sort源代码解析

    前提: 当用到scala的sortWith,发现: def sortWith(lt: (A, A) ⇒ Boolean): List[A] // A为列表元素类型 根据指定比较函数lt进行排序,且排序 ...

  2. Java Arrays.sort()重写comparator方法

    先看一下接口 Arrays.sort(T[],Comparator<? super T> c); comparator要重写compare方法 compare方法大概长这样,返回值> ...

  3. java集合 stream 相关用法(1)

    java8新增一种流式数据,让操作集合数据更简单方便. 定义基本对象: public class Peo { private String name; private String id; publi ...

  4. 深入理解Arrays.sort() (转)

    Arrays.sort(T[], Comparator < ? super T > c) 方法用于对象数组按用户自定义规则排序.官方Java文档只是简要描述此方法的作用,并未进行详细的介绍 ...

  5. Arrays.sort源代码解析

    Java Arrays.sort源代码解析 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类 ...

  6. 关于Java中Arrays.sort()方法TLE

    最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速 ...

  7. java中排序函数sort()使用,Arrays.sort()和Collections.sort()

    Java中常用的数组或集合排序的方法有两个,一个是java.util.Arrays中的静态方法Arrays.sort(),还有一个是java.util.Collections中的静态方法的Collec ...

  8. Java:集合,Arrays工具类用法

    1. 描述 Arrays工具类提供了针对数组(Array)的一些操作,比如排序.搜索.将数组(Array)转换列表(List)等等,都为静态(static)方法: binarySearch - 使用二 ...

  9. java Arrays.asList用法

    java Arrays.asList用法 用途 Arrays是java容器相关操作的工具类,asList方法将Array转换为list,是Array和List之间的桥梁. 注意 Arrays.asLi ...

随机推荐

  1. Android下载资源

    下面提供了源码下载地址,供有兴趣的朋友下载, android音乐播放器源码   由于本人才疏学浅,有很多地方不够完善,希望大家指证. 免费下载地址在 http://linux.linuxidc.com ...

  2. HTML5中File

    一 File对象与FileList对象 当将input元素的type类型设置为file时,web页面上会显示一个选择文本按钮和一个文本显示框,单击文件按钮可以选择一个文件,文本显示框中会显示选中的文件 ...

  3. CodeForces 731F Video Cards (数论+暴力)

    题意:给定 n 个数,可以对所有的数进行缩小,问你找出和最大的数,使得这些数都能整除这些数中最小的那个数. 析:用前缀和来做,先统计前 i 个数中有有多少数,然后再进行暴力去找最大值,每次都遍历这一段 ...

  4. JAVA接口和抽象类的特点

    接口的特点: 1:接口不可实例化,可结合多态进行使用(接口 对象=new 对象()) 2:接口里的成员属性全部是以 public(公开).static(静态).final(最终) 修饰符修饰 3:接口 ...

  5. bzoj21012101: [Usaco2010 Dec]Treasure Chest 藏宝箱(滚动数组优化dp)

    2101: [Usaco2010 Dec]Treasure Chest 藏宝箱 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 592  Solved:  ...

  6. P3043 [USACO12JAN]牛联盟Bovine Alliance(并查集)

    P3043 [USACO12JAN]牛联盟Bovine Alliance 题目描述 Bessie and her bovine pals from nearby farms have finally ...

  7. jQuery多项选择器

    jQuery多项选择器模式: $("selector1,selector2,selectorN"); 将每一个选择器匹配到的元素合并后一起返回,可以指定任意多个选择器,并将匹配到的 ...

  8. vim 跳行查看日志

    VIM 跳跃行号 一.显示行号 在命令模式下输入 :set nu   或者   :set number 即可显示行号 二.跳跃行号 在编辑模式下输入 ngg 或者 nG [n为指定的行数(如25)] ...

  9. python自动化测试学习笔记-8单元测试unittest模块

    官方参考文档:http://docs.python.org/2.7/library/unittest.html unittest是一个python版本的junit,junit是java中的单元测试框架 ...

  10. 记录一次mysql导入千万条测试数据过慢的问题!

    数据库在没有做任何优化的情况下,使用存储过程,插入1千万条测试数据. CREATE PROCEDURE addmaxdata(IN n int) BEGIN DECLARE i INT DEFAULT ...