链表的二路归并排序
来源:互联网 发布:淘宝店铺评价好的包包 编辑:程序博客网 时间:2024/06/16 12:20
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* sortList(ListNode* head) { if(head==NULL||head->next==NULL) return head; return mergeSort(head); } ListNode* mergeSort(ListNode*head) { if(head->next==NULL) return head; ListNode* pHead,*qHead,*pre; pHead=head; qHead=head; pre=NULL; while(qHead!=NULL&&qHead->next!=NULL) { qHead=qHead->next->next; pre=pHead; pHead=pHead->next; } pre->next=NULL; ListNode *l,*r; l=mergeSort(head); r=mergeSort(pHead); return merge(l,r); } ListNode* merge(ListNode *l,ListNode*r) { ListNode *pRes=new ListNode(0); ListNode *temp=pRes; while(l!=NULL&&r!=NULL) { if(l->val<=r->val) { temp->next=l; temp=temp->next; l=l->next; } else { temp->next=r; temp=temp->next; r=r->next; } } if(l!=NULL) temp->next=l; if(r!=NULL) temp->next=r; temp=pRes->next; delete pRes; return temp; } };
阅读全文
0 0
- 链表的二路归并排序
- 链表的二路归并排序 Sort List
- 归并排序:二路归并
- 归并排序--二路归并
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- 二路归并排序
- TextInputLayout
- 面试时,如何向公司提问?
- NodeJS 初体验
- 搭建Nginx+Java环境(转)
- 《Java虚拟机》必知必会——十四个问题总结(内存模型+GC)
- 链表的二路归并排序
- NodeJS 使用express、mongolian搭建轻量级web应用
- 重构零售与网商!马云集阿里力量建设“五新”
- Less 和 Sass 及其开发环境
- Dungeon Master-BFS
- 从零开始nodejs系列文章
- 2016-9月份至今读的小说记录
- @NotEmpty、@NotBlank、@NotNull的区别
- 解决fatal: unable to connect to github.com问题