【每日一题】06 排序链表

问题描述

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

求解

c 复制代码
/**
 * 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)过高

后续补上使用快速排序方法提升时间复杂度

相关推荐
h_a_o777oah13 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO913 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician13 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
垆边人似月.13 小时前
VLAN 资源池(100~200 分档)
数据结构·算法
程序员清风15 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
Logic10118 小时前
C语言/数据结构排序题解:三个数的最大乘积——排序后比较两种候选情况
c语言·数据结构·数组·排序·时间复杂度·算法题·负数处理
殷色玫瑰19 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
写后端的胖头鱼20 小时前
时间复杂度 & 空间复杂度
java·数据结构·算法·时间复杂度·空间复杂度
多弗朗皮卡丘20 小时前
数据结构番外:环形队列
数据结构·c
50万马克的面包21 小时前
顺序表和链表_精华知识点_CSDN博客
数据结构·链表