[LeetCode]Insertion Sort List
2014-05-30 01:01
295 查看
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
c++
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; }
相关文章推荐
- [LeetCode] Insertion Sort List
- LeetCode:Insertion Sort List//链表插入排序
- 和大神们学习每天一题(leetcode)-Insertion Sort List
- LeetCode :: Insertion Sort List [具体分析]
- LeetCode Insertion Sort List
- The Solution to LeetCode 147 Insertion Sort List
- LeetCode:Insertion Sort List
- Leetcode[147]-Insertion Sort List
- LeetCode题目5:Insertion Sort List
- Insertion Sort List ---leetcode---Runtime Error
- LeetCode 147:Insertion Sort List
- Leetcode---Insertion Sort List
- [LeetCode-Algorithms-147] "Insertion Sort List" (2017.12.21-WEEK16)
- 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