1. 单链表排序 时间复杂度O(nlogn)----快速排序实现、归并排序实现
leetcode 148
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。
示例 1:
输入: 4->2->1->3
输出: 1->2->3->4
示例 2:
输入: -1->5->3->4->0
输出: -1->0->3->4->5
代码实现
#include <iostream>
#include <queue>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
private:
// 快速排序实现
void qswap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
ListNode* qsort(ListNode* nbegin, ListNode* nend) {
if (nbegin == nend || nbegin->next == nend)
return nbegin;
int value = nbegin->val;
ListNode* p = nbegin;
ListNode* q = nbegin;
while