/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
#include <vector>
class Solution {
public:
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
vector<int> arr;
int partition(int left, int right) {
// cout<<left<<right<<"oo";
int pivot;
pivot = arr[left];
while (left < right) {
while (left < right && arr[right] >= pivot) {
right--;
}
arr[left] = arr[right];
while (left < right && arr[left] < pivot) {
left++;
}
arr[right] = arr[left];
}
arr[left] = pivot;
cout << endl;
return left;
}
void mySort(int l, int r) {
if (l < r) {
int mid = partition(l, r);
mySort(l, mid - 1);
mySort(mid + 1, r);
}
}
ListNode* sortInList(ListNode* head) {
// write code here
arr.resize(100000);
ListNode* p = head;
int len = 0;
while (p) {
arr[len] = p->val;
p = p->next;
len++;
}
mySort(0, len - 1); //对arr排序
p = head;
int idx = 0;
while (p) {
p->val = arr[idx++];
p = p->next;
}
return head;
}
};