sort list java leetcode_【Leetcode】Sort List JAVA实现

classListNode{intval;

ListNode next=null;publicListNode(){

}public ListNode(intval){this.val=val;

}

}public classSortList {publicListNode Merge(ListNode first,ListNode second){

ListNode rear;

ListNode head;

rear=head=newListNode();while(first!=null&&second!=null){if(first.val<=second.val){

rear.next=first;

rear=first;

first=first.next;

}else{

rear.next=second;

rear=second;

second=second.next;

}

}if(first!=null)

rear.next=first;elserear.next=second;returnhead.next;

}publicListNode Divide(ListNode first){ //将一个链表划分成两个基本相等的子链表if(first==null)return null;

ListNode mid=first;

ListNode pos=mid.next;while(pos!=null){

pos=pos.next;if(pos!=null){

pos=pos.next;

mid=mid.next;

}

}

ListNode q=mid.next;

mid.next=null;returnq;

}public voidMergeSort(ListNode first){ //合并排序if(first!=null&&first.next!=null){

ListNode second=Divide(first); //将链表划分成两部分

MergeSort(first); //递归

MergeSort(second);

Merge(first, second);

}

}public static voidmain(String[] args) {//TODO Auto-generated method stub

ListNode first1 = new ListNode(0);

ListNode rear1=first1;for(int i=9;i>=1;i--){

ListNode q= newListNode(i);

rear1.next=q;

rear1=q;

}

ListNode q=first1;while(q!=null){

System.out.print(q.val+ ",");

q=q.next;

}

System.out.println();

SortList sl= newSortList();

sl.MergeSort(first1);

ListNode p=first1;while(p!=null){

System.out.print(p.val+ ",");

p=p.next;

}

System.out.println();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值