1,sort函数,对一维数组元素,进行升序排列
用法: Arrays.sort(数组名称);
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++) //输入
{
a[i]=sc.nextInt();
}
Arrays.sort(a); //升序
for(int i=0;i<n;i++) //输出
{
System.out.print(a[i]+" ");
}
}
}
运行结果:
2,sort函数,对一维数组元素,进行降序排列
用Comparator
关于Integer包装类的介绍:https://www.cnblogs.com/yinzhengjie/p/8878866.html
用法: //Comparator中只能写包装类(Integer,Character,Double等)
所以用此方法时,数组元素必须是Integer类型。
Arrays.sort(a,new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return b-a; //return a-b为升序
}
});
(1) 直接写
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Integer a[]=new Integer[n]; //必须为Integer类型
for(int i=0;i<n;i++) //输入
{
a[i]=sc.nextInt();
}
Arrays.sort(a,new Comparator<Integer>() { //降序
@Override
public int compare(Integer a, Integer b) {
return b-a; //降序(return a-b为升序)
}
});
for(int i=0;i<n;i++) //输出
{
System.out.print(a[i]+" ");
}
}
}
运行结果:
(2)也可以这样写
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static class cmp implements Comparator<Integer>{ //自定义比较类
@Override
public int compare(Integer o1,Integer o2)
{
return o2-o1; //降序(return o1-o2为升序)
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Integer a[]=new Integer[n]; //Integer类
for(int i=0;i<n;i++) //输入
{
a[i]=sc.nextInt();
}
Arrays.sort(a,new cmp()); //sort函数
for(int i=0;i<n;i++) //输出
{
System.out.print(a[i]+" ");
}
}
}
运行结果:
3,sort函数,对二维的第一列,进行升序排列
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main{
public static class act{ //创建类
int first;
int second;
}
public static class cmp implements Comparator<act>{ //自定义比较类
public int compare(act o1,act o2)
{
return o1.first-o2.first;
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
act a[]=new act[n]; //数组是自己定义的act类型的
for(int i=0;i<n;i++) //输入
{
a[i]=new act(); //这个地方不要忘了
a[i].first=sc.nextInt();
a[i].second=sc.nextInt();
}
Arrays.sort(a,new cmp()); //升序排列
for(int i=0;i<n;i++) //输出
{
System.out.print(a[i].first+" ");
System.out.print(a[i].second);
System.out.println();
}
}
}
运行结果:(按第一列,升序输出)
4,sort函数,对二维的2列,同时进行升序排列
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static class act{ //创建类
int first;
int second;
}
public static class cmp implements Comparator<act>{ //自定义比较类
public int compare(act o1,act o2)
{
if(o1.first==o2.first)
{
return o1.second-o2.second; //second从小到大
}
return o1.first-o2.first;//first从小到大
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
act a[]=new act[n];
for(int i=0;i<n;i++)
{
a[i]=new act();
a[i].first=sc.nextInt();
a[i].second=sc.nextInt();
}
Arrays.sort(a,new cmp()); //升序
for(int i=0;i<n;i++)
{
System.out.println(a[i].first+" "+a[i].second);
}
}
}
运行结果如下:先按第1列升序,然后在第1列相同的内部,对第2列进行升序。