Java list 实现 快速排序实战片,根据时间排序倒排

公司待办,一种是几张表联查出来的,另一种其他系统过来的。现在要两个数据合在一起按修改时间排序。哈哈,快速排序实战片来了。


public class fastSort {
  
    public static void main(String[] args) {
    //造数据
        ArrayList<UpcomingVO> list = new ArrayList<>();
        list.add(new UpcomingVO("2020-03-04"));
        list.add(new UpcomingVO("2020-03-06"));
        list.add(new UpcomingVO("2020-03-02"));
        list.add(new UpcomingVO("2020-03-03"));
        list.add(new UpcomingVO("2020-03-07"));
        list.add(new UpcomingVO("2020-03-04"));
        list.add(new UpcomingVO("2020-03-07"));
        list.add(new UpcomingVO("2020-02-01"));
        list.add(new UpcomingVO("2020-02-14"));
        list.add(new UpcomingVO("2020-03-09"));
        sort(list,0,list.size()-1);
        list.forEach(e-> System.out.println(e.info()));
    }
    //根据修改时间倒着排
    public static void sort(ArrayList<UpcomingVO> list, int left, int right) {
        if(left>=right){
            return;
        }
        int i=left;
        int j=right;
        UpcomingVO baseData = list.get(left);
        Date base = list.get(left).getUpdatedDate();
        while(i<j){
			//先右边开始找  (很重要)
            while (bigOrEquals(base,list.get(j).getUpdatedDate()) && i<j){
                j--;
            }

            while (bigOrEquals(list.get(i).getUpdatedDate(),base) && i<j){
                i++;
            }

            UpcomingVO voi = list.get(i);
            list.set(i,list.get(j));
            list.set(j,voi);
        }

        list.set(left,list.get(i));
        list.set(i,baseData);


        sort(list,left,i-1);
        sort(list,i+1,right);
    }
    //a比b大 返回true
    public static boolean bigOrEquals(Date a,Date b){
        if(a.compareTo(b)>=0){
            return true;
        }
        return false;
    }


}
class UpcomingVO{
    private Date updatedDate;

    public  SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");


    public UpcomingVO(String str){
        try {
            this.updatedDate = sf.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    public Date getUpdatedDate() {
        return updatedDate;
    }

    public void setUpdatedDate(Date updatedDate) {
        this.updatedDate = updatedDate;
    }
    public String info(){
        return sf.format(updatedDate);
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值