Sort List
来源:互联网 发布:文学软件 编辑:程序博客网 时间:2024/04/27 22:28
Sort List
Total Accepted: 4796 Total Submissions: 24553My SubmissionsSort a linked list in O(n log n) time using constant space complexity.
归并排序:
class Solution { //小->大 public: void merge(ListNode *&p1,ListNode *&p2){ if (!p1 && !p2) return; if (!p1) { p1 = p2; while (p2->next) { p2 = p2->next; } return ; } if (!p2) { p2 = p1; while (p2->next) { p2 = p2->next; } return ; } ListNode *head,*first; if (p1->val<p2->val){ first = head = p1; p1 = p1->next; } else { first = head = p2; p2 = p2->next; } while (p1 && p2) { if (p1->val<p2->val) { first->next = p1; first = p1; p1 = p1->next; } else { first->next = p2; first = p2; p2 = p2->next; } } while (p1) { first->next = p1; first = p1; p1 = p1->next; } while (p2) { first->next = p2; first = p2; p2 = p2->next; } p1 = head; p2 = first; } ListNode *sortList(ListNode *head) { ListNode *pre,*last,*p1,*p2; ListNode *p = head,*temp ; int len=0; while ( p ){ p = p->next; len++; } for (int step=1; step<len; step<<=1) { p = head; pre = NULL; while (p ) { p1 = p; for (int i=1; p && i<step; ++i) p = p->next; if (!p || !p->next) { pre->next = p1; break ; } p2 = p->next; p->next = NULL; p = p2; for (int i=1; p && i<step; ++i) p = p->next; if (p) { temp = p; p = p->next; temp->next = NULL; } merge(p1,p2); if (pre) { pre->next = p1; } else{ head = p1; } pre = p2; } } return head; } };
0 0
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- 使用mod_wsgi将django部署到apache
- period
- IOS SqlLite3 使用笔记(一)
- 漫话中文自动分词和语义识别(下):句法结构和语义结构
- openfire中ant插件
- Sort List
- axWindowsMediaPlayer控件循环播放方法
- openfire文件传输
- 面试题
- openfire查看进出包
- redis学习
- ubuntu安装jdk
- Smail反汇编文件语句说明
- VLC学习笔记