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. 洛谷P2680 运输计划——树上差分

    题目:https://www.luogu.org/problemnew/show/P2680 久违地1A了好高兴啊! 首先,要最大值最小,很容易想到二分: 判断当前的 mid 是否可行,需要看看有没有 ...

  2. 830C

    分块+二分 这道题思路很巧妙 我们大概可以推出一个式子sigma(d-[(ai-1)%d+1])<=k,要求求出d的最大值 然后我们化简一下,sigma(d-[(ai-1)-[(ai-1)/d] ...

  3. gerrit下载

    http://central.maven.org/maven2/com/google/gerrit/gerrit-war/2.11.4/

  4. 18. 视图Ext.Viewport和窗口Ext.Window用法

    转自:http://www.cnblogs.com/linjiqin/archive/2011/06/22/2087003.html 视图Ext.Viewport和窗口Ext.Window用法. 1. ...

  5. 在 Vue 项目中(vue-cli2,vue-cli3)使用 pug 简化 HTML 的编写

    使用 pug 的原因: 使得 HTML 写起了来更加清晰和快捷 用法: Vue 的用法没有变化: <template lang="pug"> transition(na ...

  6. 规范化创建一个vs2017 Mvc框架项目

    vs2107 + dapper + MiniUi 标准化分层封装使 3.1 规范化创建一个vs2017 Mvc框架项目 此时创建的项目勾选 添加单元测试. 添加一个类库,主要用于实体类操作,类库名称 ...

  7. 报错:ERROR! The server quit without updating PID file (/usr/local/var/mysql/chenyuntekiMacBook-Air.local.pid).

    在Mac上通过brew install mysql 安装了完mysql 执行mysql.server start 报错:ERROR! The server quit without updating ...

  8. 使用Oracle SQL Developer迁移MySQL至Oracle数据库

    Oracle SQL Developer是Oracle官方出品的数据库管理工具.本文使用Oracle SQL Developer执行从MySQL迁移至Oracle数据库的操作. 2017年3月6日 操 ...

  9. What is JSON

    JSON (JavaScript Object Notation)  是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON具有以下这些形式: 对象是一个无序的“‘名称/值’对” ...

  10. 远程图形界面:使用putty+xmin远程登录ubuntu-kde

    让我继续用反人类的编辑器Vim和emacs,我宁愿自断三指.因此,在Win端配置WinSCP+Putty+Xming远程操作ubuntu. 参考链接:putty+xming远程登录Ubuntu16.0 ...