1.对基本数据类型的数组的排序

(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;

(2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。

(3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序。(其实还不如先进行升序排序,自己在转为降序)。

用默认的升序对数组排序

函数原型

  • static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
  • static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。

代码实例

import java.util.Arrays;
public class ArraysSort_11 {public static void main(String args[]){int[] a={1,4,-1,5,0};Arrays.sort(a);//数组a[]的内容变为{-1,0,1,4,5}for(int i=0;i<a.length;i++)System.out.print(a[i]+"  ");}
}

2.对复合数据类型的数据的排序

函数原型:
(1)public static void sort(T[] a,Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。

(2)public static void sort(T[] a,int fromIndex,int toIndex,Comparator c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。

说明:这个两个排序算法是“经过调优的合并排序”算法。
代码实例

package com.shuzu;import java.util.Arrays;
import java.util.Comparator;public class fuhepaixu {Point[] arr;fuhepaixu(){arr =new Point[4];for(int i=0;i<4;i++) {arr[i]=new Point();}}public static void main(String args[]) {fuhepaixu f =new fuhepaixu();f.arr[0].x=1;f.arr[1].x=2;f.arr[2].x=0;f.arr[3].x=4;f.arr[0].y=2;   f.arr[1].y=3;f.arr[2].y=1;f.arr[3].y=0;Arrays.sort(f.arr,new myComparator());for(int j=0;j<4;j++) {System.out.println("("+f.arr[j].x+","+f.arr[j].y+")");}}}class Point{int x;int y;
}class myComparator implements Comparator{public int compare(Object arg0,Object arg1) {Point t1 =(Point)arg0;Point t2 =(Point)arg1;if(t1.x!=t2.x) {return t1.x>t2.x?1:-1;}else {return t1.y>t2.y?1:-1;}}
}

Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为。

PS:关于?:公式
a>b?A:B
意思是如果a>b则这个式子的值为A;
否则值为B

java数组排序函数相关推荐

  1. php的数组排序方法,PHP数组排序函数

    在使用 PHP 进行编程时,有时需要对数组进行排序,通常我们使用的对数组进行排序的方法有冒泡排序.快速排序等等. 我们除了可以自定义一些数组排序的函数外,PHP 还内置了多种对数组进行排序的函数,这些 ...

  2. Java箭头函数,lambda函数

    Java箭头函数,lambda函数 lambda表达式实质就是一种语法糖,(建议尽量不要使用lambda表达式,代码太简洁,难懂,难以调试) lambda表达式的简单例子: 不需要参数,返回5 ()- ...

  3. php 二维数组排序函数,php自定义二维数组排序函数array

    这次给大家带来php自定义二维数组排序函数array,php自定义二维数组排序函数array的注意事项有哪些,下面就是实战案例,一起来看一下. 这篇文章主要介绍了php自定义二维数组排序函数array ...

  4. Java 回调函数的理解

    以下是我对java回调函数的理解,希望对各位有帮助. 简而言之,假设有两个类A与B,还有一个回调接口C(有一个c方法).其中A类持有一个B类对象作为属性和拥有一个a方法,并实现了接口C,所以A类中就有 ...

  5. 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )

    文章目录 一.Java 中函数参数是接口类型 二.函数参数是接口类型 可以 直接传递闭包 三.完整代码示例 一.Java 中函数参数是接口类型 在 Android 中经常使用如下形式的接口 : 定义一 ...

  6. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  7. php 求数组合集,PHP数组排序函数合集 以及它们之间的联系分析

    下边提到的几个数组函数的排序有一些共性:1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型. 2 函数名中出现单a表示association,含义为,在按值排序的 ...

  8. java lambda函数_Java SE 8新功能介绍:使用Lambda Expression进行函数式编程

    java lambda函数 " Java SE 8新功能浏览 "系列的这篇文章将深入了解Lambda表达式 . 我将向您展示Lambda表达式的几种不同用法. 它们都具有功能接口的 ...

  9. java 7.函数-递归_带有谓词的Java中的函数样式-第1部分

    java 7.函数-递归 您一直在听到将要席卷全球的函数式编程,而您仍然坚持使用普通Java? 不用担心,因为您已经可以在日常Java中添加一些功能样式. 此外,它很有趣,可以节省许多代码行并减少错误 ...

  10. java 7.函数-递归_带有谓词的Java中的函数样式-第2部分

    java 7.函数-递归 在本文的第一部分中,我们介绍了谓词,这些谓词通过具有返回true或false的单一方法的简单接口,为Java等面向对象的语言带来了函数式编程的某些好处. 在第二部分和最后一部 ...

最新文章

  1. 阿里云一键建站产品,阿里云自营建站-中小企业建站首选...
  2. 动态子类化CComboBox以得到子控件EDIT及LISTBOX
  3. Exception in thread main org.apache.thrift.transport.TTransportException: Could not create ServerS
  4. python群发邮箱软件下载_用python群发电子邮件
  5. 音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw
  6. [置顶] MyEclipse显示中文界面,在线安装教程
  7. 微信群有人发广告?用 Python 写自动化机器人消灭他!
  8. java synchronized概念用法
  9. 计算机网络数据链路层之MAC协议概述
  10. 20.数据集成、数据整合、数据融合
  11. 美团校招笔试题-算法8.20-python
  12. Mac必备效率软件|Alfred的基础使用教程
  13. 牛客网——B-栈和排序
  14. IOS开发 当滑动tabelview时,使键盘滑落
  15. Learning to Rank(以下简称L2R)
  16. 推荐人工智能编程的必读书籍
  17. Android 11 变更及适配攻略
  18. 360路由器更新网络
  19. Nginx系列--upstream模块的使用
  20. Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)

热门文章

  1. Spring----pom.xml报错Missing artifact org.aspectj:aspectjweaver:jar:1.8.0.M1
  2. java 计算器 junit测试_Java—Junit单元测试
  3. 【SQL Server】bak文件和mdf文件辨析
  4. D8(YT88)加密狗破解与加密工具
  5. 外贸询盘通开篇我的十年SEO探索路
  6. Protel99SE
  7. Acer EC-471G BIOS升级注意事项
  8. VS2008整合sp1
  9. python制作自动交易软件-Python语言之一位程序员写了一个自动化交易程序,躺着玩,两年就挣了两百万!...
  10. 2048小游戏微信小程序源码