问题描述
给你链表的头结点 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)过高
后续补上使用快速排序方法提升时间复杂度