/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
ListNode* sortInList(ListNode* head) {
// write code here
//首先这题给了空间复杂度为O(n),时间复杂度为O(nlogn),那我肯定就意识到要用排序时间
//时间复杂度为ologn的排序算法排一下就行了,因为归并排序不是很熟悉所以这里用一下堆排
int array[len];
int heapSize=len;//确定堆的范围
int ans=0;//专门给array数组用的
while(head)
{
array[ans++]=head->val;
head=head->next;
}
//循环结束后array数组就变成了一个小根堆
sort(array,&array[len]);
ListNode* Head=new ListNode(0);
ListNode* res=new ListNode(0);
Head=res;
for(int i=0;i<len;i++)
{
cout<<array[i]<<endl;
ListNode* s=new ListNode(0);
s->next=NULL;
s->val=array[i];
res->next=s;
res=s;
}
return Head->next;
}
int lenth(ListNode* head)
{
int count=0;
while(head)
{
count++;
head=head->next;
}
return count;
}
};
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
ListNode* sortInList(ListNode* head) {
// write code here
//首先这题给了空间复杂度为O(n),时间复杂度为O(nlogn),那我肯定就意识到要用排序时间
//时间复杂度为ologn的排序算法排一下就行了,因为归并排序不是很熟悉所以这里用一下堆排
//这么说来还得练下归并排序啊。。。。好心累,为什么只有我是菜狗
//哎,写了一大堆堆排没过,是你逼我无脑快排的。。
int len=lenth(head);int array[len];
int heapSize=len;//确定堆的范围
int ans=0;//专门给array数组用的
while(head)
{
array[ans++]=head->val;
head=head->next;
}
//循环结束后array数组就变成了一个小根堆
sort(array,&array[len]);
ListNode* Head=new ListNode(0);
ListNode* res=new ListNode(0);
Head=res;
for(int i=0;i<len;i++)
{
cout<<array[i]<<endl;
ListNode* s=new ListNode(0);
s->next=NULL;
s->val=array[i];
res->next=s;
res=s;
}
return Head->next;
}
int lenth(ListNode* head)
{
int count=0;
while(head)
{
count++;
head=head->next;
}
return count;
}
};