[leetcode]Insertion Sort List
来源:互联网 发布:excel中一行数据求和 编辑:程序博客网 时间:2024/05/17 00:16
Sort a linked list using insertion sort.
正好复习一下插入排序,它时间复杂度是O(n^2).
最优复杂度:当输入数组就是排好序的时候,复杂度为O(n)
(快速排序在这种情况下会产生O(n^2)的复杂度)。
最差复杂度:当输入数组为倒序时,复杂度为O(n^2)
它是一种In-place sort,不需要额外的空间消耗。
实现的算法如下:
(http://blog.csdn.net/xiazdong/article/details/8462393)
这一题特殊之处就是使用链表,链表不能随机读取。所以写起来稍微复杂一些。
/** * 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 == NULL||head->next == NULL) return head; ListNode * p,*q; for(p=head->next;p!=NULL;p=p->next){ int key = p->val,pre = head->val,tmp; bool flag = false; ListNode *cur; for(q=head;q!=p;q=q->next){ if(q->val < key) { pre = (q->next)->val; continue; } //给应该插入的地方留空位 tmp = (q->next)->val; (q->next)->val = pre; pre = tmp; //记录应该插入的地点 if(flag == false){ cur = q; flag = true; } } if(flag) cur->val = key; } 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
- CPSR和SPSR
- iOS开发--一个工程中添加多个工程
- Linux基础1-文件的权限和归属
- Linux那些事儿 之 戏说USB(18)设备的生命线(一)
- linux上安装http proxy(http代理)服务器
- [leetcode]Insertion Sort List
- Android 流式布局FlowLayout
- ContentProvider数据库共享之——MIME类型与getType()
- 欢迎使用CSDN-markdown编辑器
- 辛星整理Linux下常用的gcc参数
- Lua中的模块(module)和包(package)详解
- 菜鸟学排序:快速排序
- IO模拟I2C
- 汉诺塔 经典递归算法 in python