快速排序的时间复杂度和空间复杂度
我们来分析一下快速排序法的性能。
快速排序的时间性能取决于快速排序递归的深度,
可以用递归树来描述递归算法的执行情况。
如图9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序过程中的递归过程。由于我们的第一个关键字是50,正好是待排序的序列的中间值,因此递归树是平衡的,此时性能也比较好。
空间复杂度,
主要是递归造成的栈空间的使用,最好情况,递归树的深度为logn
其空间复杂度也就为 O(logn),
最坏情况,
需要进行n‐1递归调用,其空间复杂度为O(n),
平均情况,
空间复杂度也为O(logn)。
可惜的是,由于关键字的比较和交换是跳跃进行的,因此,
快速排序是一种不稳定的排序方法。
参考文章https://blog.csdn.net/nsjlive/article/details/102531375
快速排序的时间复杂度和空间复杂度相关推荐
- 快速排序的时间复杂度与空间复杂度
C/C++中快速排序的时间空间复杂度分析 1.什么是快速排序 我理解的是,快速排序用的是分治法,运用的递归的算法,先挑选一个基准值,小于基准值的数放在左边, 大于基准值的数放在基准值的右边,这样就泾渭 ...
- 快速排序及时间复杂度和空间复杂度
快速排序思想: 快排的核心是分治.以从小到大排序为例,把第一个值作为基准值,先从最右边进行比较,若比基准值大,那么右边的指针左移一位,如果比基准值大,那么交换基准值和当前位置的值,改变比较方向,开始从 ...
- 排序算法之 归并排序 及其时间复杂度和空间复杂度
在排序算法中快速排序的效率是非常高的,但是还有种排序算法的效率可以与之媲美,那就是归并排序:归并排序和快速排序有那么点异曲同工之妙,快速排序:是先把数组粗略的排序成两个子数组,然后递归再粗略分两个子数 ...
- 常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出 ...
- 时间复杂度和空间复杂度的故事
前言一 很多搞 iOS 开发的同学都没有学过算法,有一些甚至没有学过数据结构.在很多人的观念中,算法和数据结构只是在面试的时候有用. 这些人的想法对吗?在我看来,也对,也不对. 对于 iOS 开发来说 ...
- 常用的排序算法的时间复杂度和空间复杂度 .
常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 ...
- 各种常用排序算法的时间复杂度和空间复杂度
https://blog.csdn.net/jiajing_guo/article/details/69388331 一.常用排序算法的时间复杂度和空间复杂度表格 二.特点 1.归并排序: (1)n大 ...
- 各种排序方法的时间复杂度、空间复杂度和稳定性统计表
排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排 ...
- 【数据结构入门】算法的时间复杂度和空间复杂度详解
文章目录 (1)算法效率 (2)时间复杂度的计算 1)什么是时间复杂度 2)大O渐进表示法(估算) 3)时间复杂度计算实例 4)总结 5)一些思考 (3)空间复杂度的计算 (4)常见复杂度对比 本篇前 ...
- 常见排序算法及其对应的时间复杂度、空间复杂度
常见排序算法及其对应的时间复杂度.空间复杂度: 排序算法经过长时间演变,大体可以分为两类:内排序和外排序.在排序过程中,全部记录存放在内存,则成为内排序:如果排序过程中需要使用外存,则称为外排序,本文 ...
最新文章
- 如何用 Redis 解决海量重复提交问题
- python批量删缩进_Python工具PyCharm常用快捷键
- 为什么是容器,Docker和Kubernetes?
- spring(2)装配Bean
- php-5.2.6安装,php5.2.6安装openssl.o扩展,make时报错?
- MFC多线程的创建,包括工作线程和用户界面线程
- 如何用php饼型图,php绘制饼状图的代码举例
- Mac笔记本Postman升级为新版本后,打开时一直转圈,无法使用
- [转载]运维自动化201009
- ImageAI的介绍(1)
- 【基于 C++ 面向 Window API 的自制工具】批量重复单键操作器
- ssm+boot+thymeleaf博客系统完成总结
- TP99 TP999
- openGL之API学习(七十)windows的opengl扩展wgl
- 【重识云原生】第六章容器基础6.4.10.2节——StatefulSet常规操作实操
- JAVA 学习日志 测试抽象类的程序,每天进步/退步一点点,变化很大哦,努力!
- ChatGPT助力之论文速成秘籍
- 克隆vmware虚拟机
- 解决Vmware虚拟机下运行Linux电脑发出声音
- Unity开发OpenXR | (二)使用 OpenXR 制作一款简单VR示例场景 的全过程详细教程,包含两个实战案例。