Leetcode 147. Insertion Sort List(链表实现快排)

【AI黑话日日新】什么是AI Infra? 是支撑AI模型开发、训练、推理、部署与规模化运营的,是连接底层算力与上层AI应用的“数字基建”。没有高效的AI Infra,大模型训练、推理与落地都无法高效实现。 阅读详情

147. Insertion Sort List

Total Accepted: 66609 Total Submissions: 230331 Difficulty: Medium

Sort a linked list using insertion sort.

Subscribe to see which companies asked this question

Have you met this question in a real interview?


链接: https://leetcode.com/problems/insertion-sort-list/


#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
#include<set>

typedef long long ll;
#define eps 1e-8

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)
#define bug printf("hi"\n)
using namespace std;
#define INF 0x3f3f3f3f
#define N 30

struct ListNode{
	int val;
	ListNode *next;
	ListNode(int x):val(x),next(NULL){

	}
};

void show(ListNode * head)
{
	while(head)
	{
		printf("%d ",head->val);
		head=head->next;
	}
	printf("\n");
}

class Solution{
	public:
		ListNode *insertionSortList(ListNode * head)
		{
			if(head==NULL||head->next==NULL) return head;
			ListNode* pre=new ListNode(0);
			quicksort(pre,head,NULL);
			head=pre->next;
			delete pre;
			return head;
		}
		ListNode * quicksort(ListNode* pre,ListNode * head,ListNode *tail)
		{
			if(head==tail) return head;
			if(head->next==NULL) return head;
			ListNode * mid=getpos(pre,head,tail);
			quicksort(pre,pre->next,mid);
			quicksort(mid,mid->next,tail);
			return pre;
		}
		ListNode * getpos(ListNode* pre,ListNode *head,ListNode * tail)
		{
			ListNode *small=new ListNode(0),*big=new ListNode(0);
			ListNode *ss=small,*bb=big;
			for(ListNode * it=head->next;it!=tail;it=it->next)
				if(it->val<=head->val)
				{
					small->next=it;
					small=it;
				}
			   else
			   {
				   big->next=it;
				   big=it;
			   }
			big->next=tail;
			head->next=bb->next;
			small->next=head;
			pre->next=ss->next;
			delete bb;
			delete ss;
			return head;
		}
};


int main()
{
	int i,j;
	ListNode * head=new ListNode(3);
	ListNode * tail=head;
	for(int i=2;i>=1;i--)
	{
		ListNode * temp=new ListNode(i);
		tail->next=temp;
		tail=temp;
	}
	show(head);
	Solution ans;
	tail=ans.insertionSortList(head);
	show(tail);
	return 0;
}








EtherCAT主站SOEM -- 15 -- CIA402伺服驱动器子协议 以上就是EtherCAT主站SOEM – 15 – CIA402伺服驱动器子协议的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。 阅读详情

相关推荐

《AFSim 2.9中文参考手册》

本栏目将对《AFSim 2.9中文参考手册》进行持续更新,欢迎关注交流!对本文或者AFSIM相关内容感兴趣的朋友,可私心联系作者。《AFSim 2.9中文参考手册》内容概览。

henggesim的博客 1万+

Leetcode 148. 排序链表(快排)

小于中心的插头,大于中心的插尾,等于中心的插入 leftPivot 和 rightPivot 中间(减少相同的元素的递归)注意:添加虚拟节点,提取出来的随机节点要最后才指向空,如果新尾结点从没有移动过则需要随着 rightPivot 移动。给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。时间复杂度为 O(n*logn);空间复杂度:O(logn)然后以中心节点为头,从头到尾循环当前链表,接着将新的头尾节点连接上原有节点,链表版快排,它属于不稳定排序。先获得并提取随机中心,

专注如一的博客 496

解决倍福ADS通信错误1861和6:一次完整的TwinCAT3路由配置与故障排查实录

本文详细解析了在Linux系统上解决倍福ADS通信错误1861和6的完整流程,包括TwinCAT3路由配置与故障排查。通过实例演示了如何正确配置AMS NetID、使用adstool工具添加静态路由,以及高级网络抓包分析技巧,帮助工程师快速定位和解决通信问题。

weixin_30875157的博客 520

leetcode之hot100---148排序链表(C++)

此时就是普通的插入排序,比较相邻元素处理2: 1,2,3,4,5,6,8,7,9处理7: 1,2,3,4,5,6,7,8,9最终得到有序数组:[1, 2, 3, 4, 5, 6, 7, 8, 9]

axxy2000的博客 972

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

打开前端项目的vue.config.js文件,检查devServer下的proxy代理部分,然后将下面这个端口修改为你要在打包后访问的端口,即使用nginx代理前的接口。这个端口默认是80端口,这里把其修改为不会冲突的8010端口,后台接口的地址配置为9080,不过感觉这里设置的8010和9080可能没有用,因为部署前端静态页面是,也配置了一次网页的外部接口和api的接口,后期有空了再验证。打开右侧的Maven,点击:生存期->package,然后点击运行,等待打包成功,包在如图所示的文件夹中。

老薛的专栏 1755

DP接口详解:从主链路到AUX通道的完整解析(附常见问题排查)

本文深入解析DP接口的三大核心子系统:主链路的高速数据传输、AUX通道的智能协商以及HPD信号线的即时响应。详细介绍了DP接口的物理层设计要点、链路训练与均衡技术,并提供了常见故障排查指南,帮助工程师解决实际应用中的技术难题。

weixin_30790841的博客 461

快速排序算法 - leetcode(148)排序链表

效率不是很高,还需要优化 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ void quicksort(struct ListNode *pstart, struct ListNode *pend); s...

u012331307的博客 426

简单的服务器取证

记一次入门服务器取证——药品直销网,涵盖旧版本宝塔、静态IP的配置更改、代码的理解

m0_74559567的博客 3756

LeetCode 排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 1、暴力方法,先将链表的值存放到一个数组中,然后对这个数组进行快速排序,然后只需要遍历这个数组,将对应的数组的值赋值给链表的节点即可。但是这样做的话需要开辟空间给数组。 对应的代码: class Solution { public ListNode sortList(ListNode head) { ListNode cur = head; List<Integer> list =

奋斗的龙猫的博客 676

RK3566/RK3568 Android 11添加系统服务

【代码】RK3566/RK3568 Android 11添加系统服务。

qq_23921815的博客 641

【RT-DETR涨点改进】全网独家创新,卷积细节涨点改进篇 | TCSVT 2025 | 引入DGBM差分专家引导双向调制模块,利用双向仿射调制实现特征分布对齐,含多种创新改进,助力小目标检测高效涨点

本文提出DGBM差分专家引导双向调制模块,用于改进RT-DETR目标检测网络。该模块通过差分建模突出不同层级特征的独特信息,利用双向调制实现特征分布对齐,增强局部细节与全局语义的协同表达。DGBM包含差分专家机制、物理反演建模和双向仿射调制三个关键部分,能有效解决CNN与Transformer特征融合冲突问题。实验表明,该方法可提升复杂场景下的检测精度,降低误检漏检率,且模块具有可插拔、易集成的特点。文章详细介绍了模块结构、原理、优势及具体实现代码,并提供了四种RT-DETR改进方案的yaml配置文件。

Ai缝合怪、助力小伙伴高效发论文 441

【算法】leetcode热题--148.排序链表

但涉及了递归,就不要忘记了递归会产生额外的栈空间的消耗,所以使用自顶向下的归并其实还是有额外空间消耗,即Ologn。归并一开始我认为是并不可以的。因为在正常数组排序之中,他有空间复杂度的开销,一般认为是On 因为在归并的过程之中需要开辟一个新的数组存放。问题来了,算法需要通过从向左向右,然后假设出现情况,需要从右向左。简单的算法过程是,选中一个点,让其找到最终的排序点位,让左边的都比其小,让右边都比其大。并且,最后判断两个链表时候,只需要将其与目标链表链接在一起就可以了,而不需要重复循环移动每一个结点。

qq_49400568的博客 647

YOLOv9改进策略目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好本专栏自开设两个月以来已经更新改进教程50余篇其中包含RepNCSPELAN4、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLOv9文档并不能在优快云上传(所有的创新点都经过我的测试是可用的,得到该文件之后大家可以随意组合使用),所以会建立群的形式在内上传我的文件和视频我也会在群内不定期和大家交流回答大家问题,同时定期会更新一些文章的创新点(经过我融合测试后的,先到先得)。

Snu77的博客 1万+

leetcode----147. Insertion Sort List

链接: https://leetcode.com/problems/insertion-sort-list/ 大意: 对一个链表进行插入排序,要求使用原地算法(即空间复杂度为O(1))。例子: 思路: 插入排序的链表实现。但是实现的效率并不高,原因可能就是插入排序时间复杂度太大的缘故。 代码: /** * Definition for singly-linked list. ...

smart_ferry的博客 280

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LeetCode 148.排序链表的五种解法

LeetCode 148.排序链表的五种解法 快速排序递归非递归 归并排序递归非递归 调用STL排序

CS_boy的博客 1417

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode 148——排序链表

1. 题目 2. 解答 2.1 快速排序 可参考 快速排序和归并排序 中的第一种快速排序思想,与在数组中排序有两点不同。 第一,我们需要取最后一个元素作为主元,在数组中可以直接访问到最后一个元素,但在单链表中,我们需要先遍历一遍链表才能访问到最后一个元素。 第二,在数组中,利用主元将数组划分为左右两个部分后,我们可以用下标来递归调用,但在链表中,我们改用头指针和尾指针来标识左右两个部分。如下图所...

seniusen的博客 2622

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【LeetCode】148. 排序链表

给你链表的头结点head,请将其按排列并返回。[1,2,3,4]head = [][]你可以在O(n log n)时间复杂度和常数级空间复杂度下,对链表进行排序吗?

m0_74197695的博客 1396

leetcode链表快排

待写

qq_40200779的博客 799

LeetCode148经典题目记录(链表排序:快排+递归归并+迭代归并)

LeetCode148经典题目记录(链表排序:快排+递归归并+迭代归并)

loseyourself94的博客 525

LeetCode 148. 排序链表 基于快速排序

148. 排序链表 - 力扣(LeetCode) (leetcode-cn.com) 看好多题解都是基于归并排序的。确实链表用归并排序比较适合。且这道题单纯用快速排序在特殊数据超时了,因为链表不支持随机访问,所以不能随机选取主元,导致特殊情况时间复杂度很大。 笔者主要利用这道题复习快速排序和递归思想 思路基于快速就排序分治思想。创建头结点指向根节点,用根节点作为主元pivot,把比主元小的抽出来插入到主元左边(注意是插入到dummyHead随即后面的下一个(每次都如此,这里要理解清楚·1)),大的在主元

Ayang的博客 849

LeetCode Sort List(链表快速排序)

Sort a linked list in O(n log n) time using constant space complexity. 看到O(n log n)这个复杂度就想到了快速排序法。快速排序法主要思想为取一个基准点,采用交换+分治法完成快速排序。 对于单链表的快速排序,不能从后面开始遍历,因为根据后继找不到其前驱。因此采用以下步骤: 1.取每次的头节点为基准节点,然后将这个

SegmentFault 2164

leetcode148.排序链表/快排,归并排序

在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 来源:力扣(LeetCode) 链接:https://leetcode-cn...

yyf_blog 525

leetcode 148. Sort List 链表 归并排序 和 快排

148. Sort List Sort a linked list in O(n log n) time using constant space complexity. 要求是O(nlogn) 且不申请额外空间。有两种方式:归并 和 快排 一、归并: 主要考察3个知识点, 知识点1:归并排序的整体思想 知识点2:找到一个链表的中间节点的方法 知识点3:合并两个已

liqinzhe11的博客 1625

[leetcode]链表排序

(一)题目描述 (二)思想方法: 关于排序的方法有很多,但是符合O(nlogn)并适合链表的只有合并排序。 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conque...

guaiguaitinghua的博客 4640

leetcode——链表快排

#include using namespace std; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { public: void swapp ( int & x,int

renjiewen1995的专栏 840

[LeetCode]86. 分隔链表(java实现)链表快排

[LeetCode]86. 分隔链表(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路: 3. 解法 ---------------------------------------------------解法--------------------------------------------------- 可能存在的问题: 4. 可能有帮助的前置习题 5.

cloud的博客 420
上一篇: LeetCode 147 Insertion Sort List(链表插入排序)
下一篇: 二叉树重建
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值