首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

快速排序的空间复杂度

是O(log n)。

快速排序是一种常用的排序算法,它的空间复杂度是指在排序过程中所需的额外空间。快速排序的空间复杂度主要取决于递归调用的栈空间和额外的辅助空间。

在快速排序算法中,通过选择一个基准元素,将待排序序列分割成两个子序列,然后对子序列进行递归排序。在每一次递归调用中,需要使用栈空间来保存递归调用的返回地址和局部变量。由于快速排序是一个不断划分子序列的过程,递归调用的深度取决于序列的长度。因此,快速排序的空间复杂度是O(log n)。

除了栈空间,快速排序还需要额外的辅助空间来存储基准元素的值和临时变量。这些额外的空间不随序列的长度变化而变化,因此对于快速排序来说,额外的辅助空间是常数级别的,可以忽略不计。

总结起来,快速排序的空间复杂度是O(log n),其中n表示待排序序列的长度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 各种排序稳定性,时间复杂度空间复杂度、稳定性

    本文链接:https://blog.csdn.net/zhao1299002788/article/details/102755307 各种排序稳定性,时间复杂度空间复杂度、稳定性总结如下图:...关于时间复杂度: (1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlog2n))排序   快速排序、堆排序和归并排序; (3)O(n1+§...))排序,§是介于0和1之间常数。...关于稳定性: 稳定排序算法:冒泡排序、插入排序、归并排序和基数排序 不是稳定排序算法:选择排序快速排序、希尔排序、堆排序 #include 2 #include...int count[radix], i, j; 24 25 int *bucket = (int*)malloc((end-begin+1)*sizeof(int)); //所有桶空间开辟

    67020

    空间复杂度

    什么是空间复杂度 空间复杂度是指执行算法时所使用临时变量所占用内存空间大小,同时间复杂度一样用大写字母O(数量)来表示。...为什么使用空间复杂度 用于判断算法优劣(算法在时间复杂度相同情况下,空间复杂度越小越好) 常见空间复杂度种类 常数空间:算法所占用空间是固定,与输入输出无关,记为S(n) = O(1)。...线性空间:算法所占用空间与输入输出成正比,记为S(n) = O(n)。 二维空间:算法所分配是一个集合长度和宽度都与输入规模成正比二维数组,记为S(n) = O(n²)。...递归空间:算法使用递归时,内存会分配一个方法调用栈,和递归深度成正比,与线性空间空间复杂度相同,记为S(n) = O(n)。

    42610

    【时间复杂度空间复杂度

    因此衡量一个算法好坏,一般是从时间和空间两个维度来衡量,即时间复杂度空间复杂度。 时间复杂度主要衡量一个算法运行快慢,而空间复杂度主要衡量一个算法运行所需要额外空间。...当然,此冒泡排序是经过优化,多了一个判别,即当本身是有序时候,就不继续交换,直接跳出这个循环。但在没有优化冒泡排序逻辑中执行,无论如何他也不会执行N次,而是只执行(N*(N+1)/2次。...空间复杂度不是程序占用了多少bytes空间,因为这个也没太大意义,所以空间复杂度是变量个数。 空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。...n+1个空间,由于空间是复用,使用次数不会改变空间复杂度大小,因此空间复杂度为O(N)。...总结: 以上需要注意地方是时间复杂度计算并不是简单看循环次数,而是要根据具体逻辑来进行计算,就比如希尔排序运用了三层循环,但是他速度比冒泡速度快很多,因此,要记住具体问题具体分析!

    1.6K00

    ——算法时间复杂度空间复杂度

    1.算法效率 1.算法复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法好坏,一般是从时间和空间两个维度来衡量,即时间复杂度空间复杂度。...时间复杂度主要衡量一个算法运行快慢,而空间复杂度主要衡量一个算法运行所需要额外空间。在计算机发展早期,计算机存储容量很小。所以对空间复杂度很是在乎。...3.空间复杂度 1.概念 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时额外占用存储空间大小量度 。...空间复杂度不是程序占用了多少bytes空间,因为这个也没太大意义,所以空间复杂度是变量个数。 空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。...,在该函数中,额外开辟空间只有 end,i,exchange都是常数个,冒泡排序中数组数据不算,并不是算法逻辑需求额外开辟空间,而是本身就提供.

    10310

    时间复杂度空间复杂度

    空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 因此,评价一个算法效率主要是看它时间复杂度空间复杂度情况。...nlog2n 线性对数阶 快速排序 n^2 平方阶 两重循环 n^3 立方阶 三重循环 2^n 指数阶 递归求斐波那契数列 n!...阶乘阶 旅行商问题 说明:常见时间复杂度有小到大依次排序,随着问题规模n不断增大,上述时间复杂度不断增大,算法执行效率越低 1....有的算法需要占用临时工作单元数与解决问题规模 n 有关,它随着 n 增大而增大,当 n 较大时,将占用较多存储单元,例如快速排序和归并排序算法, 基数排序就属于这种情况 在做算法分析时,主要讨论是时间复杂度...从用户使用体验上看,更看重程序执行速度。一些缓存产品(redis, memcache)和算法(基数排序)本质就是用空间换时间。

    88930

    漫谈时间复杂度空间复杂度

    O(N**N);第二种是空间复杂度为O(1)。...复杂度,有多复杂。。。我们生来就是为了和各种复杂度作斗争,太简单没挑战,太复杂玩不动。。。所以简单就是美,能将复杂东西进行简单化,也是相当不错。 花了几个小时,沉迷到理论之中。。。...空间复杂度,就是运行一次过程中,占用存储空间大小度量,例如在进行一个list操作时候,那么空间复杂度为O(1),当在进行修改删除操作时候,可能需要新建一个新存储空间来存储新队列,从而空间复杂度为...空间复杂度和时间复杂度,可以作为选择数据类型评判标准之一。...对于一种数据结构来说,有各种各样时间复杂度,对于pythonlist实现,当你查询一个元素时候,时间复杂度是O(1),常量时间;但是当你进行加入元素,删除元素时候,时间复杂度是O(N),对于特例在尾部增加和删除操作来说

    74230

    算法时间复杂度空间复杂度

    算法复杂度         算法复杂度就是用来衡量一个算法效率,一般由两个指标构成,时间复杂度空间房租啊都。时间复杂度在乎算法运行快慢,空间复杂度衡量一个算法运行时所需要额外空间大小。...在早期时候,计算机存储和内存都很小,需要在乎空间复杂度,但是现在计算机内存都很大,那么也就不在那么在乎空间复杂度了。...空间复杂度         空间复杂度是用来衡量一个算法占用额外空间大小。这个与时间复杂度类似,也用大O渐进表示法。        ...注意是:函数运行时所占用空间(存储参数,局部变量,一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时额外申请空间来确定。        ...例如 // 计算BubbleSort空间复杂度

    10610

    算法时间复杂度空间复杂度

    空间复杂度:就是说执行当前算法需要消耗存储空间大小,也是越少越好。本来计算机存储资源就是有限,如果你算法总是需要耗费很大存储空间,这样也会给机器带来很大负担。...尤其是在嵌入式开发领域,内存和存储空间是非常有限,因此会非常重视算法空间复杂度。 稳定性: 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b前面。...不稳定:如果a原本在b前面,而a=b,排序之后 a 可能会出现在 b 后面。...三、空间复杂度计算 空间复杂度 O(1) 如果算法执行所需要临时空间不随着某个变量n大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)。...可能有的开发者接触时间复杂度空间复杂度优化不太多(尤其是客户端),但在服务端应用是比较广泛,在巨大并发量情况下,小部分时间复杂度空间复杂度优化都能带来巨大性能提升,是非常有必要了解

    1.6K10

    算法时间复杂度空间复杂度

    【C语言】时间复杂度空间复杂度 算法效率 时间复杂度 空间复杂度 算法效率 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。...因此衡量一个算法好坏,一般是从时间和空间两个维度来衡量,即时间复杂度空间复杂度。...时间复杂度主要衡量一个算法运行快慢,而空间复杂度主要衡量一个算法运行所需要额外空间。 时间复杂度 时间复杂度定义:在计算机科学中,算法时间复杂度是一个函数,它定量描述了该算法运行时间。...空间复杂度不是程序占用了多少bytes空间,因为这个也没太大意义,所以空间复杂度是变量个数。 空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。...1相等,以此类推,这段代码空间复杂度为O(N).

    1.1K00

    时间复杂度空间复杂度

    2 空间复杂度 01 定义 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小量度,记做S(n)=O(f(n))。...比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。而一般递归算法就要有O(n)空间复杂度了,因为每次递归都要存储返回信息。...这是通过一笔空间开销来换取计算时间小技巧。到底哪一个好,其实要看你用在什么地方。 一个程序空间复杂度是指运行完一个程序所需内存大小。   (1) 固定部分。...S(n)=O(f(n)) 其中n为问题规模,S(n)表示空间复杂度,f(n)为语句关于n所占存储空间函数。...若算法执行时所需辅助空间相对于输入数据量而言是个常数,则称此算法为原地工作,空间复杂度为0(1)。 通常, 我们都使用"时间复杂度"来指运行时间需求,使用"空间复杂度"指空间需求。

    1.1K60

    时间复杂度空间复杂度

    我么可以用算法空间复杂度来描述算法对内存占用。...算法空间复杂度计算公式记作:S(n)=O(f(n)),其中n为输入规模,f(n)为语句关于n所占存储空间函数。 案例: 对指定数组元素进行反转,并返回反转内容。...,我们得出内存占用情况如下: 算法一: 不管传入数组大小为多少,始终额外申请4+4=8个字节; 算法二: 4+4n+24=4n+28; 根据大O推导法则,算法一空间复杂度为O(1),算法二空间复杂度为...O(n),所以从空间占用角度讲,算法一要优于算法二。...但是,如果你做程序是嵌入式开发,尤其是一些传感器设备上内置程序,由于这些设备内存很小,一般为几kb,这个时候对算法空间复杂度就有要求了,但是一般做java开发,基本上都是服务器开发,一般不存在这样问题

    61320

    【漫画】为什么说O(n)复杂度基数排序没有快速排序快?

    1、基数排序是一种用空间换时间排序算法,数据量越大,额外空间就越大? 我想法:我觉得基数排序并非是一种时间换空间排序,也就是说,数据量越大,额外空间并非就越大。...因为在把元素放进桶时候,是完全可以用指针指向这个元素,也就是说,只有初始那些桶才算是额外空间。 2、居然额外空间不是限制基数排序速度原因,那为啥基数排序没有快速排序快呢?...基数时间复杂度为O(n),不过他是忽略了常数项,即实际排序时间为kn(其中k是常数项),然而在实际排序过程中,这个常数项k其实是很大,这会很大程度影响实际排序时间,而像快速排序虽然是nlogn,...需要说明是,基数排序也并非比快速排序慢,这得看具体情况,(不要被标题所影响哈)。而且,数据量越大的话,基数排序会越有优势。 3、有人可能会问,说了这么多,那到底是基数排序快还是快速排序快呢?...对于这样问题,我只能建议你,自己根据不同场景,撸几行代码,自己测试一下。 如果你问我,哪个排序在实际中用更多,那么,我选快速排序。 文章讲这里,也结束了,如果你有什么其它想法,欢迎后台来骚扰。

    73610

    算法时间复杂度空间复杂度计算

    算法空间复杂度 我们在写代码时,完全可以用空间来换去时间。 举个例子说,要判断某年是不是闰年,你可能会花一点心思来写一个算法,每给一个年份,就可以通过这个算法计算得到是否闰年结果。...2.1 算法空间复杂度定义 算法空间复杂度通过计算算法所需存储空间实现,算法空间复杂度计算公式记作:S(n)=O(f(n)),其中,n为问题规模,f(n)为语句关于n所占存储空间函数,也是一种...“渐进表示法”,这些所需要内存空间通常分为“固定空间内存”(包括基本程序代码、常数、变量等)和“变动空间内存”(随程序运行时而改变大小使用空间) 通常,我们都是用“时间复杂度”来指运行时间需求,是用...“空间复杂度”指空间需求。...2.2 计算方法 忽略常数,用O(1)表示 递归算法空间复杂度=递归深度N*每次递归所要辅助空间 对于单线程来说,递归有运行时堆栈,求是递归最深那一次压栈所耗费空间个数,因为递归最深那一次所耗费空间足以容纳它所有递归过程

    1.7K20
    领券