问题描述
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。
求解
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* sortList(struct ListNode* head) {
struct ListNode * p = head;
if(p == NULL){
return head;
}
struct ListNode * q = head->next;
int t;
while(p->next != NULL){
while(q !=NULL){
//printf("before: p: %d, q: %d\n", p->val, q->val);
if(p->val > q->val){
t = p->val;
p->val = q->val;
q->val = t;
}
//printf("after: p: %d, q: %d\n", p->val, q->val);
q = q->next;
}
p = p->next;
//printf("p : %d\n", p->val);
q = p->next;
//printf("q : %d\n", q->val);
}
return head;
}
该方法时间复杂度O(n^2)过高文章来源:https://www.toymoban.com/news/detail-829746.html
后续补上使用快速排序方法提升时间复杂度文章来源地址https://www.toymoban.com/news/detail-829746.html
到了这里,关于【每日一题】06 排序链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!