BM12 单链表的排序
中等 通过率:50.49% 时间限制:2秒 空间限制:256M
知识点:链表 排序
描述:给定一个节点数为n的无序单链表,对其按升序排序。
数据范围:0 < n \le 1000000<n≤100000
要求:时间复杂度 O(nlogn)O(nlogn)
示例1
输入:{1,3,2,4,5}
返回值:{1,2,3,4,5}
示例2
输入:{-1,0,-2}
返回值:{-2,-1,0}
代码如下:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
struct ListNode* sortInList(struct ListNode* head ) {
// write code here
struct ListNode *p, *q, *t;
int temp;
for(p = head; p != NULL; p = p->next){
for(q = p; q != NULL; q = q->next){
if(p->val > q->val){
temp = q->val;
q->val = p->val;
p->val = temp;
}
}
}
return head;
}