[LeetCode]Insertion Sort List
来源:互联网 发布:巩俐白骨精知乎 编辑:程序博客网 时间:2024/05/18 02:40
Sort a linked list using insertion sort.
Analysis
The general idea is insert the current element A[i] into the proper position from A[0]...A[i-1], and A[0]...A[i-1] is already sorted.
In this problem, we can use the same idea and linked list provides a more efficient way for insertion. Details can be found in the code below. Note that after the insertion, the position of P is unchanged but should not provide another p=p->next operation.
Complexity is O(n^2)
java
public ListNode insertionSortList(ListNode head) { if(head == null || head.next == null) return head; ListNode newHead = new ListNode(-1); newHead.next = head; ListNode cur = head; ListNode post = head.next; while(post!=null){ if(post.val>=cur.val){ cur = cur.next; post = post.next; }else {ListNode insertCur = newHead;ListNode insertPost = newHead.next;while(insertPost.val<post.val){insertCur = insertPost;insertPost = insertPost.next;}cur.next = post.next;post.next = insertPost;insertCur.next = post;post = cur.next;} } return newHead.next; }
c++
ListNode *insertionSortList(ListNode *head) { if(head == NULL) return head; ListNode *p = new ListNode(-1); p->next = head; ListNode *pre = head; ListNode *cur = pre->next; while(cur){ if(cur->val >= pre->val){ pre = cur; cur = cur->next; }else{ ListNode *insertPre = p; ListNode *insertCur = p->next; while(insertCur->val < cur->val){ insertPre = insertCur; insertCur = insertCur->next; } pre->next = cur->next; cur->next = insertCur; insertPre->next = cur; cur = pre->next; } } head = p->next; return head; }
0 0
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- leetcode-Insertion Sort List
- [LeetCode]Insertion Sort List
- 【LeetCode】Insertion Sort List
- LeetCode | Insertion Sort List
- LeetCode - Insertion Sort List
- [LeetCode] Insertion Sort List
- Insertion Sort List (LeetCode)
- [LeetCode] Insertion Sort List
- [LeetCode]Insertion Sort List
- leetcode Insertion Sort List
- Insertion Sort List -- LeetCode
- Insertion Sort List (LeetCode)
- LeetCode Insertion Sort List
- leetcode Insertion Sort List
- 一个经典例子让你彻彻底底理解java回调机制
- android系统架构与内核与源代码结构
- 常用开源服务器库和中间件
- Java比较汉字字符串排序与C++比较汉字排序
- 图片轮播
- [LeetCode]Insertion Sort List
- thinkphp中的F方法
- UVa 482 - Permutation Arrays
- 搭建手机网站
- struts2的validate在使用过程中的一个问题
- ThinkPHP的I方法
- 省赛总结---哈工大(威海)
- A、D、S、L、C、F、I
- thinkphp中的时间戳,获取完整URL,