LeetCode147_Insertion Sort List(用安插排序算法对链表进行排序) Java题解
LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解
题目:
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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。