【Leet Code】147. Insertion Sort List---Medium
来源:互联网 发布:mac虚拟机系统如何删除 编辑:程序博客网 时间:2024/05/16 07:02
Sort a linkedlist using insertion sort.
思路: 插入排序主要有直接插入排序和希尔插入排序,
1) 直接插入排序
把一个记录插入到一个已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。
时间复杂度: O(n^2), 空间复杂度:O(1)。稳定排序算法。
图示:
2)希尔排序,又称“缩小增量排序”。
先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
时间复杂度:O(nlog(n)),空间复杂度:O(1)。不稳定排序算法。
图示:
分析比较以上两种排序可以发现希尔排序对于链表结构并不适合,需要大量处理指针。所以此处使用简单插入排序,但是简单插入排序的缺点是时间复杂度是O(n^2)。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* insertionSortList(ListNode* head) { if (!head || !head->next) return head; ListNode* p = head->next; head->next = NULL; while (p) { ListNode* q = p->next; // Find the place to insert the p in the list which has sorted // If insert the p to the head of the list if (p->val < head->val) { p->next = head; head = p; } else { ListNode* curInsert = head; ListNode* preInsert = head; while (curInsert && curInsert->val <= p->val) { preInsert = curInsert; curInsert = curInsert->next; } preInsert->next = p; p->next = curInsert; } p = q; } return head; }};
0 0
- 【Leet Code】147. Insertion Sort List---Medium
- [leet code] Insertion Sort List
- 【Leet Code】148. Sort List---Medium
- Leetcode 147. Insertion Sort List (Medium) (cpp)
- Insertion Sort List(medium)
- 【Leet Code】 75.Sort Colors--medium
- 147.leetcode Insertion Sort List(medium)[链表 插入排序]
- CODE 144: Insertion Sort List
- insertion-sort-list java code
- [Leetcode 147, medium] Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 147. Insertion Sort List
- 【Android技术整理】AsyncTask实现多线程处理
- C++的深拷贝与浅拷贝
- 【网络】(十)select的限制与解决方法poll
- 返回来源页
- NHibernate从入门到精通系列(1)——NHibernate概括
- 【Leet Code】147. Insertion Sort List---Medium
- Spring AOP
- Vmware vSphere 5.0 vSphere网络原理及vSwitch简介
- nasm : 在真机开机时, 屏幕上显示点东西
- Eclipse 环境变量配置(eclipse+SDK+ADT)
- 大数相乘
- CocoaPods安装和使用 (一)
- IOS tableView EmptyView
- Android系统开发之HAL层开发基础