首页 > 其他分享 >排序总结 链表

排序总结 链表

时间:2023-09-09 15:31:51浏览次数:40  
标签:总结 复杂度 笔试 链表 logN 排序 节点

排序总结











时间复杂度

空间复杂度

是否能有稳定性

选择

O(N*N)

O(1)

×

冒泡

O(N*N)

O(1)

✔️

插入

O(N*N)

O(1)

✔️

归并

O(N*logN)

O(N)

✔️

快排(一般指3.0)

O(N*logN)

O(N*logN)

×

O(N*logN)

O(1)

×

基数排序作为不基于比较的排序,有稳定性

基础类型的排序一般排序用快排,因为其时间复杂度常数项更小,需要保持稳定定用归并,不想占用额外空间用堆排序

非基础类型的排序可以用归并,因为有稳定性

希尔排序:多轮插入排序

排序优化:

样本N较大时,先用快排划分为一个个N较小的样本,在小样本上使用插入排序(插入排序时间复杂度常数项极低)

哈希表查找 O(1)   有序表查找 O(logN)

笔试:不需要考虑空间复杂度

面试:空间复杂度尽量小

链表

基础题:

反转单向链表和双向链表  打印两链表公共部分

判断回文链表

笔试做法:快慢指针找到链表中间(链表长度为奇数/偶数 code不一样),栈

面试做法:快慢指针找到链表中间,右半部分链表反转,判断回文,恢复链表

将单向链表按某值划分成左边小,中间相等,右边大的形式

笔试做法:每个节点放在数组里,数组做partition,把节点串起来

面试做法:六个变量,小于/等于/大于区域的头/尾,最后连起来(要注意三个区域是否为空)

复制链表,链表节点除有next指针外,还有一个rand指针,随机指向链表某个节点或为空

笔试做法:哈希表(key:老节点 value:新节点)

面试节点:把新节点串在老节点后面(再后面是下一个新节点),省掉哈希表

标签:总结,复杂度,笔试,链表,logN,排序,节点
From: https://blog.51cto.com/u_15724083/7419818

相关文章

  • Python中列表list常用方法总结
     在Python中,列表(List)是一种有序的数据集合,可以存储任意类型的数据,例如整数、浮点数、字符串、元组、列表等。因为列表是有序的,所以可以通过下标(索引)来访问和修改列表中的元素。Python中的列表是可变的,也就是说可以动态增加和删除元素。创建列表的方法有多种,其中最常见的是使......
  • 31个必备的Python字符串方法总结
     字符串是Python中基本的数据类型,几乎在每个Python程序中都会使用到它。 1、Slicingslicing切片,按照一定条件从列表或者元组中取出部分元素(比如特定范围、索引、分割值)s='hello's=s[:]print(s)#hellos='hello's=s[3:8]print(s)#hello 2......
  • 解析排序算法:十大排序方法的工作原理与性能比较
    当我们面临对数据进行排序的任务时,计算机科学家们开发了多种排序算法来满足不同的需求。这些排序算法各具特点,适用于不同规模和类型的数据集。在本文中,我们将介绍十大常见的排序算法,并讨论它们的工作原理、时间复杂度以及适用场景。1.冒泡排序(BubbleSort)冒泡排序是最简单的排序算......
  • 9.9模拟总结
    模拟赛笔G总体上:这一次考试真的是dp专场,我全部打的暴力部分分,难受的一批!主要是我个人的dp能力太薄弱了......个体上:第一题:在考场上我的状态设计的很正确,但是没有想出正解,也没有想到过单调队列优化这些事。总结:dp的优化除了直接时间上优化,还可以通过减少状态数来优化。就......
  • C++基础总结
    1C++初识1.1第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1创建项目 VisualStudio是我们用来编写C++程序的主要工具,我们先将它打开1.1.2创建文件右键源文件,选择添加->新建项给C++文件起个名称,然后点击添加即可。1.1.3编写代码#include<......
  • 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表
    203.移除链表元素链表定义structListNode{intval;ListNode*next;ListNode():val(0),next(NULL){};ListNode(intx):val(x),next(NULL){};ListNode(intx,ListNode*next):val(x),next(next){};}1.在原链表上移除链表元素classSolut......
  • LeetCode -- 207. 课程表 (拓扑排序)
     经典拓扑排序的应用,用拓扑排序的算法看看原图中是否有一个合法的拓扑序。classSolution{public:conststaticintN=2010,M=5010;inth[N],e[M],ne[M],idx;intd[N],q[N];voidadd(inta,intb){e[idx]=b,ne[idx]=h[a],h[......
  • 【收获总结】水晶头的制作
    目录一、前言二、水晶头制作步骤1、首先准备好若干个水晶头2、准备一把网线钳和网线3、按照顺序进行排列4、插进水晶头5、放入压线槽内6、同理制作另一端7、进行测试三、技术的应用四、保养与注意事项1、避免弯曲2、防尘防潮五、应用与维护六、总结一、前言在现代社会中,网络连接已......
  • web前端技能方法总结(css、js、jquery、html)(2)
    创建链接块display:block;列表样式在一个无序列表中,列表项的标志(marker)是出现在各列表项旁边的圆点。在有序列表中,标志可能是字母、数字或另外某种计数体系中的一个符号。要修改用于列表项的标志类型,可以使用属性list-style-type:ul{list-style-type:square;}1上面的声明把......
  • 每日总结1
    今天课上小测一次,所以认识到不会梦梦学,还弄了设计的理解方案1:王平仲2:问题:1:房间构造为多三角结构,会极大程度压缩空间2:楼道窗户设置不正对楼梯,导致楼道采光不好3:厨房面积太小,导致室内空间温度极度升高4:阁楼楼梯不安全,一上去就会撞到房梁,甚至原本的房梁没有拆掉,压着新搭建的......