JAVA中Arrays.sort()重写比较器方法——二维数组int a[][]中的重写

JAVA中Arrays.sort()重写比较器方法——二维数组int a[][]中的重写

二维数组int a[][]中的重写
如:利用第二维中的第6个元素的大小关系,给第一维排序。

Arrays.sort(a, new Comparator()
{
		@Override
		public int compare(int[] o1, int[] o2) {
		// TODO Auto-generated method stub
			return o1[5]-o2[5];
		}
});

又如:

	Arrays.sort(a, new Comparator()
	{
		@Override
		public int compare(int[] o1, int[] o2) {
			// TODO Auto-generated method stub
			if(o1[1]==o2[1]) return o1[0]-o2[0];//升序
			else return o2[1]-o1[1];//降序
		}
	});

例题:ccf2013-3第二题——窗口
满分代码:

import java.util.*;
public class Main {
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		int[][] a=new int[n+1][];
			
		a[0]=new int[6];
		for(int i=0;i<6;i++) a[0][i]=0;
		for(int i=1;i<=n;i++)
		{
			a[i]=new int[6];
			for(int j=0;j<4;j++) {a[i][j]=sc.nextInt();}
			a[i][4]=i;//序号
			a[i][5]=i;//相对层级
		}
		while(m--!=0)
		{
			int x=sc.nextInt();
			int y=sc.nextInt();
			int t=0,f=0;
			for(int i=n;i>=1;i--)
			{
				if(x>=a[i][0]&&x<=a[i][2])
				{
					if(y>=a[i][1]&&y<=a[i][3])
					{
						System.out.println(a[i][4]);
						f=1;
						t=i;
						break;
					}
				}
			}
			if(f==0) System.out.println("IGNORED");
			else
			{
				if(t!=n)
				{
					a[t][5]=a[n][5]+1;
					Arrays.sort(a, new Comparator()
					{
						@Override
						public int compare(int[] o1, int[] o2) {
							// TODO Auto-generated method stub
							return o1[5]-o2[5];
						}
					});
				}
			}
		}		
	}
}

例题:ccf2015-03-2数字排序

import java.util.*;
public class Main {
	public static void main(String[]args)
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[][] a=new int[1001][];
		for(int i=0;i<=1000;i++) 
		{
			a[i]=new int[2];
			a[i][0]=i;//记录数
			a[i][1]=0;//记录个数
		}
		for(int i=0;i()
		{
			@Override
			public int compare(int[] o1, int[] o2) {
				// TODO Auto-generated method stub
				if(o1[1]==o2[1]) return o1[0]-o2[0];//正序,从小到大
				else return o2[1]-o1[1];//倒序,从大到小
			}
		});
		for(int i=0;i<=1000;i++)
		{
			if(a[i][1]!=0)
			{
				System.out.println(a[i][0]+" "+a[i][1]);
			}
			else break;
		}
	}
}

你可能感兴趣的:(JAVA中Arrays.sort()重写比较器方法——二维数组int a[][]中的重写)