LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解

来源:互联网 发布:soc软件品牌 编辑:程序博客网 时间:2024/06/05 20:10

题目:

Sort a linked list using insertion sort.


题解:

插入排序就是先对一部分进行排序 排序好后将未排序的插入到已经排序好的队列中  在插入的时候  如果是数组的话可以从前往后  也可以从后往前  对于链表就只能是前者了


代码:

public static ListNode insertionSortList(ListNode head) {ListNode fakeNode=new ListNode(-1);fakeNode.next=head;if(head==null)return null;ListNode cur=head.next;//从第二个节点开始遍历ListNode pre=head;//排好序的最后一个节点while(cur!=null){if(cur.val<pre.val){ListNode nextNode=cur.next;//保存下一个需要遍历的节点//寻找插入的合适位置ListNode cur2=fakeNode.next;ListNode temp=fakeNode;//记录cur2前面一个节点while(cur.val>cur2.val&&cur2!=pre){        temp=cur2;cur2=cur2.next;}//进行插入temp.next=cur;cur.next=cur2;pre.next=nextNode;//继续遍历下一个节点cur=nextNode;}else {pre=cur;cur=cur.next;}}return fakeNode.next;            }


0 0
原创粉丝点击