java中sort的使用方法

今天做一个简单的oj题目要用到排序,用C写的话10行左右就AC了,但是手贱了想要java提交,于是乎写了一长串代码,鼓捣了半天才AC了敲打

我就纳闷了,同样是sort,实现起来咋就比STL复杂呢么多呢==发火    ................ 好了  抱怨到此结束~

如果是单纯的从小到大排序是很简单的,因为sort默认就是从小到大排序= =

那么如何从大到小排序呢?如何对类进行排序呢(联想C的结构体)  类比STL中的比较函数,这里也需要一个比较函数,只不过实现起来要比C复杂一些

实现方法:sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)  根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。其中的T[] a表示要拍排序的

类等,后面两个参数是排序的起点和终点,最后一个参数就是前面提到的比较函数,区别就是这里是一个接口委屈.我就是在这个地方鼓捣了很久的= =

那么要实现这个接口,就要新定义一个类,让这个类来实现这个接口,里面就需要调用接口函数compare(T o1, T o2)  比较用来排序的两个参数= =生气这里又有一个问题函数参数是Object类型的,所以必须要进行强制转换,这个函数里面 有三种关系,大于则返回 1,等于返回0,小于返回-1.这样是默认从小到大排序,也就是说,如果想从大到小排序的话就把1改为-1.这样就可以实现类的排序了!大笑

import java.io.*;
import java.util.*;
import java.util.Comparator;
public class Main
{
    static int n,i,j;
    static Sort s[]=new Sort[1000];
    
    public static void main(String[] args)
    {
        Scanner cin = new Scanner(new BufferedInputStream(System.in));
        n=cin.nextInt();
        for(i=0;i<n;i++)
            s[i]=new Sort(cin.nextInt(),cin.nextInt(),cin.nextInt());
        Arrays.sort(s,0,n,new act());
        for(i=0;i<n;i++)
            System.out.println(s[i].a);
    }
}
    
class Sort 
{
    int a,b,c;
    Sort(int x,int y,int z)
    {
        a=x;
        b=y;
        c=z;
    }
} 
class act implements Comparator
    {
    public int compare(Object o1, Object o2) 
    {
        int d1=((Sort)o1).b-((Sort)o2).b;
        int d2=((Sort)o1).c-((Sort)o2).c;
        if(d1>0) return -1;
        if(d1<0)return 1;
        if(d1==0)
        {
            if(d2>0)return 1;
            if(d2<0)return -1;
            if(d2==0)return 0;
        }
        return 0;
    }
    }


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值