当前位置: 首页 > news >正文

AcWing 1451:单链表快速排序

【题目来源】
https://www.acwing.com/problem/content/1453/

【题目描述】
给定一个单链表,请使用快速排序算法对其排序。
要求:期望平均时间复杂度为 O(nlogn),期望额外空间复杂度为 O(logn)。
思考题: 如果只能改变链表结构,不能修改每个节点的val值该如何做呢?

【数据范围】
链表中的所有数大小均在 int 范围内,链表长度在 [0,10000]。
本题数据完全随机生成。

【输入样例】
[5, 3, 2]

【输出样例】
[2, 3, 5]

【算法代码】
下面代码转载自:https://www.acwing.com/solution/content/57352/

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/class Solution {public:ListNode* quickSortList(ListNode* head) {if(!head) return head;quickSort(head, NULL);return head;}void quickSort(ListNode* head, ListNode* tail) {if(head!=tail) {int key=head->val;ListNode *p=head, *q=p->next;while(q!=tail) {if(q->val < key) {p=p->next;swap(p->val,q->val);}q=q->next;}if(p!=head){swap(head->val,p->val);}                    quickSort(head,p);quickSort(p->next,tail);}}
};




【参考文献】
https://www.acwing.com/solution/content/57352/

 


http://www.mrgr.cn/news/61430.html

相关文章:

  • 软件架构考试基础知识 003:信号量与PV操作
  • An FPGA-based SoC System——RISC-V On PYNQ项目复现
  • 实时数仓:基于数据湖的实时数仓与数据治理架构
  • mysql本地安装和pycharm链接数据库操作
  • 分类模型为什么使用交叉熵作为损失函数
  • 操作系统之文件系统
  • crash工具使用
  • GPT避坑指南:如何辨别逆向、AZ、OpenAI官转
  • linux网络编程7——协程设计原理与汇编实现
  • 【网络】传输层协议TCP
  • Training language models to follow instructions with human feedback解读
  • 国密和国际密
  • 拥塞控制与TCP子问题(粘包问题,异常情况等)
  • 2024/10/29 英语每日一段
  • PyMol3.0 Educational Version激活教程(激活一次可用半年)
  • LCR 027. 回文链表 不利用额外空间实现快慢指针
  • OSError: no library called “cairo-2“ was found no library called “cairo“ was
  • 84674
  • msvcr100.dll丢失怎样修复,介绍6个简单靠谱的方法
  • 基于SSM+微信小程序的汽车维修管理系统(汽车5)
  • Qt编程技巧小知识点(6)根据 *IDN? 对程控仪器连接状态进行确认
  • leetcode hot100【LeetCode 543. 二叉树的直径】java实现
  • 离散数学实验五c语言(并查集处理,Kruskal算法求最小生成树)
  • binlog 介绍
  • C# OpenCvSharp DNN UNet 推理
  • 2024年【通信安全员ABC证】最新解析及通信安全员ABC证新版试题