赞
踩
刷题过程中常常遇到排序问题,Java中自带的sort方法可以非常方便的帮助我们进行排序。
常见的排序问题有两种情形:
1.对一个数组进行排序。
2.对自定义类型的类进行排序。
一,对数组进行排序:
通常情况下我们可以使用Array.sort()来对数组进行排序,有以下3种情况:
1.Array.sort(int[] a)
直接对数组进行升序排序
2.Array.sort(int[] a , int fromIndex, int toIndex)
对数组的从fromIndex到toIndex进行升序排序,注意这是左闭右开的
3.新建一个comparator从而实现自定义比较
具体方法如下:
import java.util.*; public class no { public static void main(String []args) { int[] ints=new int[]{2,324,4,57,1}; System.out.println("增序排序后顺序"); Arrays.sort(ints); for (int i=0;i<ints.length;i++) { System.out.print(ints[i]+" "); } System.out.println("\n减序排序后顺序"); //要实现减序排序,得通过包装类型数组,基本类型数组是不行滴 //倒过来是大顶堆 Integer[] integers=new Integer[]{2,324,4,4,6,1}; Arrays.sort(integers, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } public boolean equals(Object obj) { return false; } }); for (Integer integer:integers) { System.out.print(integer+" "); } System.out.println("\n对部分排序后顺序"); int[] ints2=new int[]{212,43,2,324,4,4,57,1}; //对数组的[2,6)位进行排序 Arrays.sort(ints2,2,6); for (int i=0;i<ints2.length;i++) { System.out.print(ints2[i]+" "); } } }
二,对自定义类进行排序
当我们处理自定义类型的排序时,一般将自定义类放在List种,之后再进行排序
一般我们对自定义类型数据进行重写Comparator来进行对数据进行比较
具体方法如下:
public static class Adam { int ID ; int val ; String name ; Adam(int ID , String name , int val) { this.ID = ID ; this.name = name ; this.val = val ; } } Collections.sort(list, new Comparator<Object>(){ //我们希望对自定义Adam中的ID进行排序 public int compare(Object a , Object b) { Adam student1 = (Adam)a ; Adam student2 = (Adam)b ; return student1.ID - student2.ID ; } });
Arrays.sort(int[])都是基于比较的排序的示例,因此必须具有最坏情况的复杂度Ω(n log n)
用法1:接受2个参数
Arrays.fill( a1, value );
注:a1是一个数组变量,value是一个a1中元素数据类型的值,作用:填充a1数组中的每个元素都是value
例如:
boolean[] a1 = new boolean[5];
Arrays.fill( a1,true );
结果 a1[] = {true,true,true,true,true};
用法2:接受4个参数
例如:
String[] a9 = new String[6];
Arrays.fill(a9, “Hello”);
Arrays.fill(a9, 3, 5,“World”);
结果是 a9[] = {Hello,Hello,Hello,World,World,Hello};
第一个参数指操作的数组,第二个和第三个指在该数组的某个区域插入第四个参数,第二个参数指起始元素下标(包含该下标),第三个参数指结束下标(不包含该下标),注意:java的数组下标从0开始
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。